hash-map-traits.h (simple_hashmap_traits::key_type): New typedef.
authorRichard Sandiford <richard.sandiford@arm.com>
Thu, 25 Jun 2015 17:17:20 +0000 (17:17 +0000)
committerRichard Sandiford <rsandifo@gcc.gnu.org>
Thu, 25 Jun 2015 17:17:20 +0000 (17:17 +0000)
gcc/
* hash-map-traits.h (simple_hashmap_traits::key_type): New typedef.
(unbounded_int_hashmap_traits::key_type): Likewise.
* hash-map.h (hash_map): Get the key type from the traits.
* hash-traits.h (default_hash_traits): By default, inherit from the
template parameter.
* alias.c (alias_set_traits): Delete.
(alias_set_entry_d::children): Use alias_set_hash as the first
template parameter.
(record_alias_subset): Update accordingly.
* except.c (tree_hash_traits): Delete.
(type_to_runtime_map): Use tree_hash as the first template parameter.
(init_eh): Update accordingly.
* genmatch.c (capture_id_map_hasher): Delete.
(cid_map_t): Use nofree_string_hash as first template parameter.
* ipa-icf.h (symbol_compare_hashmap_traits): Delete.
* ipa-icf.c (sem_item_optimizer::subdivide_classes_by_sensitive_refs):
Use symbol_compare_hash as the first template parameter in
subdivide_hash_map.
* mem-stats.h (mem_usage_pair::mem_alloc_hashmap_traits): Delete.
(mem_usage_pair::mem_map_t): Use mem_location_hash as the first
template parameter.
* passes.c (pass_registry_hasher): Delete.
(name_to_pass_map): Use nofree_string_hash as the first template
parameter.
(register_pass_name): Update accordingly.
* sanopt.c (sanopt_tree_map_traits): Delete.
(sanopt_tree_triplet_map_traits): Delete.
(sanopt_ctx::asan_check_map): Use tree_operand_hash as the first
template parameter.
(sanopt_ctx::vptr_check_map): Use sanopt_tree_triplet_hash as
the first template parameter.
* sese.c (rename_map_hasher): Delete.
(rename_map_type): Use tree_ssa_name_hash as the first template
parameter.
* symbol-summary.h (function_summary::summary_hashmap_traits): Delete.
(function_summary::m_map): Use map_hash as the first template
parameter.
(function_summary::release): Update accordingly.
* tree-if-conv.c (phi_args_hash_traits): Delete.
(predicate_scalar_phi): Use tree_operand_hash as the first template
parameter to phi_arg_map.
* tree-inline.h (dependence_hasher): Delete.
(copy_body_data::dependence_map): Use dependence_hash as the first
template parameter.
* tree-inline.c (remap_dependence_clique): Update accordingly.
* tree-ssa-strlen.c (stridxlist_hash_traits): Delete.
(decl_to_stridxlist_htab): Use tree_decl_hash as the first template
parameter.
(addr_stridxptr): Update accordingly.
* value-prof.c (profile_id_traits): Delete.
(cgraph_node_map): Use profile_id_hash as the first template
parameter.
(init_node_map): Update accordingly.
* config/alpha/alpha.c (string_traits): Delete.
(machine_function::links): Use nofree_string_hash as the first
template parameter.
(alpha_use_linkage, alpha_write_linkage): Update accordingly.
* config/m32c/m32c.c (pragma_traits): Delete.
(pragma_htab): Use nofree_string_hash as the first template parameter.
(m32c_note_pragma_address): Update accordingly.
* config/mep/mep.c (pragma_traits): Delete.
(pragma_htab): Use nofree_string_hash as the first template parameter.
(mep_note_pragma_flag): Update accordingly.
* config/mips/mips.c (mips16_flip_traits): Delete.
(mflip_mips16_htab): Use nofree_string_hash as the first template
parameter.
(mflip_mips16_use_mips16_p): Update accordingly.
(local_alias_traits): Delete.
(mips16_local_aliases): Use nofree_string_hash as the first template
parameter.
(mips16_local_alias): Update accordingly.

From-SVN: r224977

23 files changed:
gcc/ChangeLog
gcc/alias.c
gcc/config/alpha/alpha.c
gcc/config/m32c/m32c.c
gcc/config/mep/mep.c
gcc/config/mips/mips.c
gcc/except.c
gcc/genmatch.c
gcc/hash-map-traits.h
gcc/hash-map.h
gcc/hash-traits.h
gcc/ipa-icf.c
gcc/ipa-icf.h
gcc/mem-stats.h
gcc/passes.c
gcc/sanopt.c
gcc/sese.c
gcc/symbol-summary.h
gcc/tree-if-conv.c
gcc/tree-inline.c
gcc/tree-inline.h
gcc/tree-ssa-strlen.c
gcc/value-prof.c

index 216a77ed0f4d7c55dd552ac44e233eb5cb1e1efe..e0134e1027967363143dbd5b1cf0985edf3e4ca9 100644 (file)
@@ -1,3 +1,77 @@
+2015-06-25  Richard Sandiford  <richard.sandiford@arm.com>
+
+       * hash-map-traits.h (simple_hashmap_traits::key_type): New typedef.
+       (unbounded_int_hashmap_traits::key_type): Likewise.
+       * hash-map.h (hash_map): Get the key type from the traits.
+       * hash-traits.h (default_hash_traits): By default, inherit from the
+       template parameter.
+       * alias.c (alias_set_traits): Delete.
+       (alias_set_entry_d::children): Use alias_set_hash as the first
+       template parameter.
+       (record_alias_subset): Update accordingly.
+       * except.c (tree_hash_traits): Delete.
+       (type_to_runtime_map): Use tree_hash as the first template parameter.
+       (init_eh): Update accordingly.
+       * genmatch.c (capture_id_map_hasher): Delete.
+       (cid_map_t): Use nofree_string_hash as first template parameter.
+       * ipa-icf.h (symbol_compare_hashmap_traits): Delete.
+       * ipa-icf.c (sem_item_optimizer::subdivide_classes_by_sensitive_refs):
+       Use symbol_compare_hash as the first template parameter in
+       subdivide_hash_map.
+       * mem-stats.h (mem_usage_pair::mem_alloc_hashmap_traits): Delete.
+       (mem_usage_pair::mem_map_t): Use mem_location_hash as the first
+       template parameter.
+       * passes.c (pass_registry_hasher): Delete.
+       (name_to_pass_map): Use nofree_string_hash as the first template
+       parameter.
+       (register_pass_name): Update accordingly.
+       * sanopt.c (sanopt_tree_map_traits): Delete.
+       (sanopt_tree_triplet_map_traits): Delete.
+       (sanopt_ctx::asan_check_map): Use tree_operand_hash as the first
+       template parameter.
+       (sanopt_ctx::vptr_check_map): Use sanopt_tree_triplet_hash as
+       the first template parameter.
+       * sese.c (rename_map_hasher): Delete.
+       (rename_map_type): Use tree_ssa_name_hash as the first template
+       parameter.
+       * symbol-summary.h (function_summary::summary_hashmap_traits): Delete.
+       (function_summary::m_map): Use map_hash as the first template
+       parameter.
+       (function_summary::release): Update accordingly.
+       * tree-if-conv.c (phi_args_hash_traits): Delete.
+       (predicate_scalar_phi): Use tree_operand_hash as the first template
+       parameter to phi_arg_map.
+       * tree-inline.h (dependence_hasher): Delete.
+       (copy_body_data::dependence_map): Use dependence_hash as the first
+       template parameter.
+       * tree-inline.c (remap_dependence_clique): Update accordingly.
+       * tree-ssa-strlen.c (stridxlist_hash_traits): Delete.
+       (decl_to_stridxlist_htab): Use tree_decl_hash as the first template
+       parameter.
+       (addr_stridxptr): Update accordingly.
+       * value-prof.c (profile_id_traits): Delete.
+       (cgraph_node_map): Use profile_id_hash as the first template
+       parameter.
+       (init_node_map): Update accordingly.
+       * config/alpha/alpha.c (string_traits): Delete.
+       (machine_function::links): Use nofree_string_hash as the first
+       template parameter.
+       (alpha_use_linkage, alpha_write_linkage): Update accordingly.
+       * config/m32c/m32c.c (pragma_traits): Delete.
+       (pragma_htab): Use nofree_string_hash as the first template parameter.
+       (m32c_note_pragma_address): Update accordingly.
+       * config/mep/mep.c (pragma_traits): Delete.
+       (pragma_htab): Use nofree_string_hash as the first template parameter.
+       (mep_note_pragma_flag): Update accordingly.
+       * config/mips/mips.c (mips16_flip_traits): Delete.
+       (mflip_mips16_htab): Use nofree_string_hash as the first template
+       parameter.
+       (mflip_mips16_use_mips16_p): Update accordingly.
+       (local_alias_traits): Delete.
+       (mips16_local_aliases): Use nofree_string_hash as the first template
+       parameter.
+       (mips16_local_alias): Update accordingly.
+
 2015-06-25  Richard Sandiford  <richard.sandiford@arm.com>
 
        * hash-map-traits.h (default_hashmap_traits): Delete.
index 32eb3cf77adcbac4f496d22dd98a0f6fef12a82e..ca2082e7e65f6ff3b78423349c98fe5dc7545e17 100644 (file)
@@ -142,7 +142,6 @@ along with GCC; see the file COPYING3.  If not see
    error to attempt to explicitly construct a subset of zero.  */
 
 struct alias_set_hash : int_hash <int, INT_MIN, INT_MIN + 1> {};
-struct alias_set_traits : simple_hashmap_traits <alias_set_hash> {};
 
 struct GTY(()) alias_set_entry_d {
   /* The alias set number, as stored in MEM_ALIAS_SET.  */
@@ -155,7 +154,7 @@ struct GTY(()) alias_set_entry_d {
 
      continuing our example above, the children here will be all of
      `int', `double', `float', and `struct S'.  */
-  hash_map<int, int, alias_set_traits> *children;
+  hash_map<alias_set_hash, int> *children;
 
   /* Nonzero if would have a child of zero: this effectively makes this
      alias set the same as alias set zero.  */
@@ -1134,7 +1133,7 @@ record_alias_subset (alias_set_type superset, alias_set_type subset)
       subset_entry = get_alias_set_entry (subset);
       if (!superset_entry->children)
        superset_entry->children
-         = hash_map<int, int, alias_set_traits>::create_ggc (64);
+         = hash_map<alias_set_hash, int>::create_ggc (64);
       /* If there is an entry for the subset, enter all of its children
         (if they are not already present) as children of the SUPERSET.  */
       if (subset_entry)
@@ -1146,7 +1145,7 @@ record_alias_subset (alias_set_type superset, alias_set_type subset)
 
          if (subset_entry->children)
            {
-             hash_map<int, int, alias_set_traits>::iterator iter
+             hash_map<alias_set_hash, int>::iterator iter
                = subset_entry->children->begin ();
              for (; iter != subset_entry->children->end (); ++iter)
                superset_entry->children->put ((*iter).first, (*iter).second);
index 3970278358413ef1a5621dac2b6e188a2874f3a3..29dfc681e34a969e71bdb1010d37062a513b7453 100644 (file)
@@ -4806,8 +4806,6 @@ alpha_multipass_dfa_lookahead (void)
 
 struct GTY(()) alpha_links;
 
-typedef simple_hashmap_traits <nofree_string_hash> string_traits;
-
 struct GTY(()) machine_function
 {
   /* For flag_reorder_blocks_and_partition.  */
@@ -4817,7 +4815,7 @@ struct GTY(()) machine_function
   bool uses_condition_handler;
 
   /* Linkage entries.  */
-  hash_map<const char *, alpha_links *, string_traits> *links;
+  hash_map<nofree_string_hash, alpha_links *> *links;
 };
 
 /* How to allocate a 'struct machine_function'.  */
@@ -9544,7 +9542,7 @@ alpha_use_linkage (rtx func, bool lflag, bool rflag)
     }
   else
     cfun->machine->links
-      = hash_map<const char *, alpha_links *, string_traits>::create_ggc (64);
+      = hash_map<nofree_string_hash, alpha_links *>::create_ggc (64);
 
   if (al == NULL)
     {
@@ -9635,7 +9633,7 @@ alpha_write_linkage (FILE *stream, const char *funname)
 
   if (cfun->machine->links)
     {
-      hash_map<const char *, alpha_links *, string_traits>::iterator iter
+      hash_map<nofree_string_hash, alpha_links *>::iterator iter
        = cfun->machine->links->begin ();
       for (; iter != cfun->machine->links->end (); ++iter)
        alpha_write_one_linkage ((*iter).first, (*iter).second, stream);
index 7dd175363bcd22b91eab5eefb111096317dbbab0..7396be5c9fafc9f5bf2cbe3d6f88feda3645fd7e 100644 (file)
@@ -3053,17 +3053,14 @@ m32c_insert_attributes (tree node ATTRIBUTE_UNUSED,
     }  
 }
 
-typedef simple_hashmap_traits<nofree_string_hash> pragma_traits;
-
 /* Hash table of pragma info.  */
-static GTY(()) hash_map<const char *, unsigned, pragma_traits> *pragma_htab;
+static GTY(()) hash_map<nofree_string_hash, unsigned> *pragma_htab;
 
 void
 m32c_note_pragma_address (const char *varname, unsigned address)
 {
   if (!pragma_htab)
-    pragma_htab
-      = hash_map<const char *, unsigned, pragma_traits>::create_ggc (31);
+    pragma_htab = hash_map<nofree_string_hash, unsigned>::create_ggc (31);
 
   const char *name = ggc_strdup (varname);
   unsigned int *slot = &pragma_htab->get_or_insert (name);
index 3698bb06e1987618b8760b42808c8645b4105987..bd372d872fc086aa78b6e05641146968f402ff0d 100644 (file)
@@ -4071,18 +4071,14 @@ struct GTY(()) pragma_entry {
   int flag;
 };
 
-typedef simple_hashmap_traits<nofree_string_hash> pragma_traits;
-
 /* Hash table of farcall-tagged sections.  */
-static GTY(()) hash_map<const char *, pragma_entry, pragma_traits> *
-  pragma_htab;
+static GTY(()) hash_map<nofree_string_hash, pragma_entry> *pragma_htab;
 
 static void
 mep_note_pragma_flag (const char *funcname, int flag)
 {
   if (!pragma_htab)
-    pragma_htab
-      = hash_map<const char *, pragma_entry, pragma_traits>::create_ggc (31);
+    pragma_htab = hash_map<nofree_string_hash, pragma_entry>::create_ggc (31);
 
   bool existed;
   const char *name = ggc_strdup (funcname);
index c8374cf95d5aeb52e3b4904133a7852aed9b7357..367ab74c5b8f26a4a00d496c983716ba74572f11 100644 (file)
@@ -1263,12 +1263,9 @@ static int mips_register_move_cost (machine_mode, reg_class_t,
 static unsigned int mips_function_arg_boundary (machine_mode, const_tree);
 static machine_mode mips_get_reg_raw_mode (int regno);
 \f
-struct mips16_flip_traits : simple_hashmap_traits <nofree_string_hash> {};
-
 /* This hash table keeps track of implicit "mips16" and "nomips16" attributes
    for -mflip_mips16.  It maps decl names onto a boolean mode setting.  */
-static GTY (()) hash_map<const char *, bool, mips16_flip_traits> *
-  mflip_mips16_htab;
+static GTY (()) hash_map<nofree_string_hash, bool> *mflip_mips16_htab;
 
 /* True if -mflip-mips16 should next add an attribute for the default MIPS16
    mode, false if it should next add an attribute for the opposite mode.  */
@@ -1289,8 +1286,7 @@ mflip_mips16_use_mips16_p (tree decl)
     return !base_is_mips16;
 
   if (!mflip_mips16_htab)
-    mflip_mips16_htab
-      = hash_map<const char *, bool, mips16_flip_traits>::create_ggc (37);
+    mflip_mips16_htab = hash_map<nofree_string_hash, bool>::create_ggc (37);
 
   name = IDENTIFIER_POINTER (DECL_NAME (decl));
 
@@ -6589,13 +6585,10 @@ mips_load_call_address (enum mips_call_type type, rtx dest, rtx addr)
     }
 }
 \f
-struct local_alias_traits : simple_hashmap_traits <nofree_string_hash> {};
-
 /* Each locally-defined hard-float MIPS16 function has a local symbol
    associated with it.  This hash table maps the function symbol (FUNC)
    to the local symbol (LOCAL). */
-static GTY (()) hash_map<const char *, rtx, local_alias_traits>
-  *mips16_local_aliases;
+static GTY (()) hash_map<nofree_string_hash, rtx> *mips16_local_aliases;
 
 /* FUNC is the symbol for a locally-defined hard-float MIPS16 function.
    Return a local alias for it, creating a new one if necessary.  */
@@ -6605,8 +6598,7 @@ mips16_local_alias (rtx func)
 {
   /* Create the hash table if this is the first call.  */
   if (mips16_local_aliases == NULL)
-    mips16_local_aliases
-      = hash_map<const char *, rtx, local_alias_traits>::create_ggc (37);
+    mips16_local_aliases = hash_map<nofree_string_hash, rtx>::create_ggc (37);
 
   /* Look up the function symbol, creating a new entry if need be.  */
   bool existed;
index 081b402fc50ab89604a59abec9bb6c01dafc93d3..fae85a26f197bd927ea8ac6d5261c2d0f193bc88 100644 (file)
@@ -163,8 +163,7 @@ along with GCC; see the file COPYING3.  If not see
 
 static GTY(()) int call_site_base;
 
-struct tree_hash_traits : simple_hashmap_traits <tree_hash> {};
-static GTY (()) hash_map<tree, tree, tree_hash_traits> *type_to_runtime_map;
+static GTY (()) hash_map<tree_hash, tree> *type_to_runtime_map;
 
 /* Describe the SjLj_Function_Context structure.  */
 static GTY(()) tree sjlj_fc_type_node;
@@ -247,8 +246,7 @@ init_eh (void)
   if (! flag_exceptions)
     return;
 
-  type_to_runtime_map
-    = hash_map<tree, tree, tree_hash_traits>::create_ggc (31);
+  type_to_runtime_map = hash_map<tree_hash, tree>::create_ggc (31);
 
   /* Create the SjLj_Function_Context structure.  This should match
      the definition in unwind-sjlj.c.  */
index b0b9290404396ccc7e27272b013797083060aff5..195dc3cf3bc75e794f6211572a1e26d74dceb74c 100644 (file)
@@ -395,9 +395,7 @@ get_operator (const char *id)
   return 0;
 }
 
-typedef simple_hashmap_traits<nofree_string_hash> capture_id_map_hasher;
-
-typedef hash_map<const char *, unsigned, capture_id_map_hasher> cid_map_t;
+typedef hash_map<nofree_string_hash, unsigned> cid_map_t;
 
 
 /* The AST produced by parsing of the pattern definitions.  */
index 9cdbfbede2dfeccf119c6f1f083cf04110e469e9..2225426e365caac7832c4dd79ae15485ed292954 100644 (file)
@@ -31,9 +31,9 @@ along with GCC; see the file COPYING3.  If not see
 template <typename H>
 struct simple_hashmap_traits
 {
-  static inline hashval_t hash (const typename H::value_type &);
-  static inline bool equal_keys (const typename H::value_type &,
-                                const typename H::value_type &);
+  typedef typename H::value_type key_type;
+  static inline hashval_t hash (const key_type &);
+  static inline bool equal_keys (const key_type &, const key_type &);
   template <typename T> static inline void remove (T &);
   template <typename T> static inline bool is_empty (const T &);
   template <typename T> static inline bool is_deleted (const T &);
@@ -43,15 +43,14 @@ struct simple_hashmap_traits
 
 template <typename H>
 inline hashval_t
-simple_hashmap_traits <H>::hash (const typename H::value_type &h)
+simple_hashmap_traits <H>::hash (const key_type &h)
 {
   return H::hash (h);
 }
 
 template <typename H>
 inline bool
-simple_hashmap_traits <H>::equal_keys (const typename H::value_type &k1,
-                                      const typename H::value_type &k2)
+simple_hashmap_traits <H>::equal_keys (const key_type &k1, const key_type &k2)
 {
   return H::equal (k1, k2);
 }
@@ -158,6 +157,7 @@ unbounded_hashmap_traits <Value>::mark_deleted (T &entry)
 template <typename Key, typename Value>
 struct unbounded_int_hashmap_traits : unbounded_hashmap_traits <Value>
 {
+  typedef Key key_type;
   static inline hashval_t hash (Key);
   static inline bool equal_keys (Key, Key);
 };
index 2f1bca4d950fefd3f48b79f9ea15bab1afb4eb9d..cd97d354f1c0063f4afec017c25ba49530ef756b 100644 (file)
@@ -21,10 +21,11 @@ along with GCC; see the file COPYING3.  If not see
 #ifndef hash_map_h
 #define hash_map_h
 
-template<typename Key, typename Value,
+template<typename KeyId, typename Value,
         typename Traits>
 class GTY((user)) hash_map
 {
+  typedef typename Traits::key_type Key;
   struct hash_entry
   {
     Key m_key;
index 26da1f239b8c943830081f630a9d15d38566c05c..450354ae1d706a0688b27e4de620b2a5d568eb6f 100644 (file)
@@ -278,7 +278,7 @@ struct ggc_cache_ptr_hash : pointer_hash <T>, ggc_cache_remove <T *> {};
 
 struct nofree_string_hash : string_hash, typed_noop_remove <const char *> {};
 
-template <typename T> struct default_hash_traits;
+template <typename T> struct default_hash_traits : T {};
 
 template <typename T>
 struct default_hash_traits <T *> : ggc_ptr_hash <T> {};
index 9a8133faa2c4620acf27e54fd6c2f02951d97a56..1f0a55f1fa3c8efca169ac857c23d6179f31248b 100644 (file)
@@ -2908,8 +2908,7 @@ sem_item_optimizer::subdivide_classes_by_equality (bool in_wpa)
 unsigned
 sem_item_optimizer::subdivide_classes_by_sensitive_refs ()
 {
-  typedef hash_map <symbol_compare_collection *, vec <sem_item *>,
-    symbol_compare_hashmap_traits> subdivide_hash_map;
+  typedef hash_map <symbol_compare_hash, vec <sem_item *> > subdivide_hash_map;
 
   unsigned newly_created_classes = 0;
 
index b94a38e6f4e7ac3a5617278853004ee7172d2568..67d5bdc90c5eb9c7f8ff344b110e5fc1234316e7 100644 (file)
@@ -125,8 +125,6 @@ struct symbol_compare_hash : nofree_ptr_hash <symbol_compare_collection>
     return true;
   }
 };
-typedef simple_hashmap_traits <symbol_compare_hash>
-  symbol_compare_hashmap_traits;
 
 
 /* Semantic item usage pair.  */
index a9580ab442e89f16ed5ef6395fe032e908856aa9..a6489b500686767b410fb32bfbde84e7e213c545 100644 (file)
@@ -260,10 +260,9 @@ public:
        && l1->m_line == l2->m_line;
     }
   };
-  typedef simple_hashmap_traits<mem_location_hash> mem_alloc_hashmap_traits;
 
   /* Internal class type definitions.  */
-  typedef hash_map <mem_location *, T *, mem_alloc_hashmap_traits> mem_map_t;
+  typedef hash_map <mem_location_hash, T *> mem_map_t;
   typedef hash_map <const void *, mem_usage_pair<T> > reverse_mem_map_t;
   typedef hash_map <const void *, std::pair<T *, size_t> > reverse_object_map_t;
   typedef std::pair <mem_location *, T *> mem_list_t;
index c0a90063bb815ccce6c950ab1a336d44fd158d7d..1316193ad41b341da0eab0e50a2fea93f97984e2 100644 (file)
@@ -858,10 +858,7 @@ pass_manager::register_dump_files (opt_pass *pass)
   while (pass);
 }
 
-typedef simple_hashmap_traits<nofree_string_hash> pass_registry_hasher;
-
-static hash_map<const char *, opt_pass *, pass_registry_hasher>
-  *name_to_pass_map;
+static hash_map<nofree_string_hash, opt_pass *> *name_to_pass_map;
 
 /* Register PASS with NAME.  */
 
@@ -869,8 +866,7 @@ static void
 register_pass_name (opt_pass *pass, const char *name)
 {
   if (!name_to_pass_map)
-    name_to_pass_map
-      = new hash_map<const char *, opt_pass *, pass_registry_hasher> (256);
+    name_to_pass_map = new hash_map<nofree_string_hash, opt_pass *> (256);
 
   if (name_to_pass_map->get (name))
     return; /* Ignore plugin passes.  */
index e8dfc5f6e8bcba1ebb879f4ade7f3f7a433b2a7c..967926f051937a454aa015f369ee30d29513e62b 100644 (file)
@@ -97,8 +97,6 @@ maybe_get_single_definition (tree t)
   return NULL_TREE;
 }
 
-typedef simple_hashmap_traits <tree_operand_hash> sanopt_tree_map_traits;
-
 /* Tree triplet for vptr_check_map.  */
 struct sanopt_tree_triplet
 {
@@ -154,8 +152,6 @@ struct sanopt_tree_triplet_hash : typed_noop_remove <sanopt_tree_triplet>
     return ref.t1 == NULL;
   }
 };
-typedef simple_hashmap_traits <sanopt_tree_triplet_hash>
-  sanopt_tree_triplet_map_traits;
 
 /* This is used to carry various hash maps and variables used
    in sanopt_optimize_walker.  */
@@ -168,13 +164,12 @@ struct sanopt_ctx
 
   /* This map maps a pointer (the second argument of ASAN_CHECK) to
      a vector of ASAN_CHECK call statements that check the access.  */
-  hash_map<tree, auto_vec<gimple>, sanopt_tree_map_traits> asan_check_map;
+  hash_map<tree_operand_hash, auto_vec<gimple> > asan_check_map;
 
   /* This map maps a tree triplet (the first, second and fourth argument
      of UBSAN_VPTR) to a vector of UBSAN_VPTR call statements that check
      that virtual table pointer.  */
-  hash_map<sanopt_tree_triplet, auto_vec<gimple>,
-          sanopt_tree_triplet_map_traits> vptr_check_map;
+  hash_map<sanopt_tree_triplet_hash, auto_vec<gimple> > vptr_check_map;
 
   /* Number of IFN_ASAN_CHECK statements.  */
   int asan_num_accesses;
index 95ef7e80372f7f985f13787ed597b1b6a81a8c0c..2ba2f980ca0ee0a6b62fff8fe5ba55c5b8c6d211 100644 (file)
@@ -76,8 +76,7 @@ debug_rename_map_1 (tree_node *const &old_name, tree_node *const &expr,
   return true;
 }
 \f
-typedef simple_hashmap_traits<tree_ssa_name_hash> rename_map_hasher;
-typedef hash_map<tree, tree, rename_map_hasher> rename_map_type;
+typedef hash_map<tree_ssa_name_hash, tree> rename_map_type;
 \f
 
 /* Print to stderr all the elements of RENAME_MAP.  */
index facb5961eb60e60531fae0d39659a2304049b807..eefbfd912a40590bf1557d24172ba9d54dc346d6 100644 (file)
@@ -83,7 +83,7 @@ public:
     m_symtab_duplication_hook = NULL;
 
     /* Release all summaries.  */
-    typedef typename hash_map <int, T *, summary_hashmap_traits>::iterator map_iterator;
+    typedef typename hash_map <map_hash, T *>::iterator map_iterator;
     for (map_iterator it = m_map.begin (); it != m_map.end (); ++it)
       release ((*it).second);
   }
@@ -201,7 +201,6 @@ protected:
 
 private:
   typedef int_hash <int, 0, -1> map_hash;
-  typedef simple_hashmap_traits <map_hash> summary_hashmap_traits;
 
   /* Getter for summary callgraph ID.  */
   T* get (int uid)
@@ -215,7 +214,7 @@ private:
   }
 
   /* Main summary store, where summary ID is used as key.  */
-  hash_map <int, T *, summary_hashmap_traits> m_map;
+  hash_map <map_hash, T *> m_map;
   /* Internal summary insertion hook pointer.  */
   cgraph_node_hook_list *m_symtab_insertion_hook;
   /* Internal summary removal hook pointer.  */
index 59853c8addeadd14d9337cff99e631ebcaa9092e..003f1ddecd2e312e2009907dc1a3111851410b74 100644 (file)
@@ -1589,8 +1589,6 @@ convert_scalar_cond_reduction (gimple reduc, gimple_stmt_iterator *gsi,
   return rhs;
 }
 
-typedef simple_hashmap_traits <tree_operand_hash> phi_args_hash_traits;
-
 /* Produce condition for all occurrences of ARG in PHI node.  */
 
 static tree
@@ -1737,7 +1735,7 @@ predicate_scalar_phi (gphi *phi, gimple_stmt_iterator *gsi)
   /* Create hashmap for PHI node which contain vector of argument indexes
      having the same value.  */
   bool swap = false;
-  hash_map<tree, auto_vec<int>, phi_args_hash_traits> phi_arg_map;
+  hash_map<tree_operand_hash, auto_vec<int> > phi_arg_map;
   unsigned int num_args = gimple_phi_num_args (phi);
   int max_ind = -1;
   /* Vector of different PHI argument values.  */
index ce9495de2ef3076c648e0b9757f95fdfeec5ed5f..68321985ef705905eb3197f980d9ea0dbb968b17 100644 (file)
@@ -862,8 +862,7 @@ remap_dependence_clique (copy_body_data *id, unsigned short clique)
   if (clique == 0)
     return 0;
   if (!id->dependence_map)
-    id->dependence_map
-      = new hash_map<unsigned short, unsigned short, dependence_hasher>;
+    id->dependence_map = new hash_map<dependence_hash, unsigned short>;
   bool existed;
   unsigned short &newc = id->dependence_map->get_or_insert (clique, &existed);
   if (!existed)
index 3a47d978e123c596977269209c5fb8b1e5a63aa5..58af9cdb7baf58990eda43e55ad396b23fd25380 100644 (file)
@@ -36,7 +36,6 @@ enum copy_body_cge_which
 };
 
 typedef int_hash <unsigned short, 0> dependence_hash;
-typedef simple_hashmap_traits <dependence_hash> dependence_hasher;
 
 /* Data required for function body duplication.  */
 
@@ -148,7 +147,7 @@ struct copy_body_data
 
   /* A map from the inlined functions dependence info cliques to
      equivalents in the function into which it is being inlined.  */
-  hash_map<unsigned short, unsigned short, dependence_hasher> *dependence_map;
+  hash_map<dependence_hash, unsigned short> *dependence_map;
 };
 
 /* Weights of constructions for estimate_num_insns.  */
index 97e896315d5788a3de39b0559eeeb2b096148b2d..d4987519721405ebcc9ec7c0743280c20fa412da 100644 (file)
@@ -154,12 +154,9 @@ struct decl_stridxlist_map
   struct stridxlist list;
 };
 
-typedef simple_hashmap_traits <tree_decl_hash> stridxlist_hash_traits;
-
 /* Hash table for mapping decls to a chained list of offset -> idx
    mappings.  */
-static hash_map<tree, stridxlist, stridxlist_hash_traits>
-  *decl_to_stridxlist_htab;
+static hash_map<tree_decl_hash, stridxlist> *decl_to_stridxlist_htab;
 
 /* Obstack for struct stridxlist and struct decl_stridxlist_map.  */
 static struct obstack stridx_obstack;
@@ -325,7 +322,7 @@ addr_stridxptr (tree exp)
   if (!decl_to_stridxlist_htab)
     {
       decl_to_stridxlist_htab
-               = new hash_map<tree, stridxlist, stridxlist_hash_traits> (64);
+               = new hash_map<tree_decl_hash, stridxlist> (64);
       gcc_obstack_init (&stridx_obstack);
     }
 
index a84b8dae7a3c6a1bc38eec8ba46af8c5f765eb00..2917c30de61d4fbe1933338e40bf69b0428311f3 100644 (file)
@@ -1249,10 +1249,8 @@ gimple_mod_subtract_transform (gimple_stmt_iterator *si)
 }
 
 typedef int_hash <unsigned int, 0, UINT_MAX> profile_id_hash;
-typedef simple_hashmap_traits <profile_id_hash> profile_id_traits;
 
-static hash_map<unsigned int, cgraph_node *, profile_id_traits> *
-cgraph_node_map = 0;
+static hash_map<profile_id_hash, cgraph_node *> *cgraph_node_map = 0;
 
 /* Returns true if node graph is initialized. This
    is used to test if profile_id has been created
@@ -1272,8 +1270,7 @@ void
 init_node_map (bool local)
 {
   struct cgraph_node *n;
-  cgraph_node_map
-    = new hash_map<unsigned int, cgraph_node *, profile_id_traits>;
+  cgraph_node_map = new hash_map<profile_id_hash, cgraph_node *>;
 
   FOR_EACH_DEFINED_FUNCTION (n)
     if (n->has_gimple_body_p ())