tree-hash-traits.h (tree_decl_hash): New class.
authorRichard Sandiford <richard.sandiford@arm.com>
Thu, 25 Jun 2015 17:15:54 +0000 (17:15 +0000)
committerRichard Sandiford <rsandifo@gcc.gnu.org>
Thu, 25 Jun 2015 17:15:54 +0000 (17:15 +0000)
gcc/
* tree-hash-traits.h (tree_decl_hash): New class.
* tree-ssa-strlen.c: Include tree-hash-traits.h.
(stridxlist_hash_traits): Use tree_decl_hash.

From-SVN: r224968

gcc/ChangeLog
gcc/tree-hash-traits.h
gcc/tree-ssa-strlen.c

index 9087350f2cd15d54ad22666525c247aea536922b..30b7cdc121a4c2491acbf8a18dfd21b0c16e33db 100644 (file)
@@ -1,3 +1,9 @@
+2015-06-25  Richard Sandiford  <richard.sandiford@arm.com>
+
+       * tree-hash-traits.h (tree_decl_hash): New class.
+       * tree-ssa-strlen.c: Include tree-hash-traits.h.
+       (stridxlist_hash_traits): Use tree_decl_hash.
+
 2015-06-25  Richard Sandiford  <richard.sandiford@arm.com>
 
        * tree-hash-traits.h: New file.
index eab8c300d5e0eca27a96091f76fcc6b62b7acf92..9a2fda7bac69b13530e528269f07b89380c9b31c 100644 (file)
@@ -39,4 +39,18 @@ tree_operand_hash::equal_keys (const_tree t1, const_tree t2)
   return operand_equal_p (t1, t2, 0);
 }
 
+/* Hasher for tree decls.  Pointer equality is enough here, but the DECL_UID
+   is a better hash than the pointer value and gives a predictable traversal
+   order.  */
+struct tree_decl_hash : ggc_ptr_hash <tree_node>
+{
+  static inline hashval_t hash (tree);
+};
+
+inline hashval_t
+tree_decl_hash::hash (tree t)
+{
+  return DECL_UID (t);
+}
+
 #endif
index fc848ea41b918ca77e0ea1df90a162adf35eeca9..97e896315d5788a3de39b0559eeeb2b096148b2d 100644 (file)
@@ -71,6 +71,7 @@ along with GCC; see the file COPYING3.  If not see
 #include "ipa-ref.h"
 #include "cgraph.h"
 #include "ipa-chkp.h"
+#include "tree-hash-traits.h"
 
 /* A vector indexed by SSA_NAME_VERSION.  0 means unknown, positive value
    is an index into strinfo vector, negative value stands for
@@ -153,20 +154,7 @@ struct decl_stridxlist_map
   struct stridxlist list;
 };
 
-/* stridxlist hashtable helpers.  */
-
-struct stridxlist_hash_traits : default_hashmap_traits
-{
-  static inline hashval_t hash (tree);
-};
-
-/* Hash a from tree in a decl_stridxlist_map.  */
-
-inline hashval_t
-stridxlist_hash_traits::hash (tree item)
-{
-  return DECL_UID (item);
-}
+typedef simple_hashmap_traits <tree_decl_hash> stridxlist_hash_traits;
 
 /* Hash table for mapping decls to a chained list of offset -> idx
    mappings.  */