This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
[07/13] Add ggc_ptr_hash
- From: Richard Sandiford <richard dot sandiford at arm dot com>
- To: gcc-patches at gcc dot gnu dot org
- Date: Tue, 16 Jun 2015 10:01:11 +0100
- Subject: [07/13] Add ggc_ptr_hash
- Authentication-results: sourceware.org; auth=none
- References: <87fv5s2gej dot fsf at e105548-lin dot cambridge dot arm dot com>
This patch renames ggc_hasher to ggc_remove and removes the typedefs,
to make it provide the same kind of interface as typed_noop_remove and
typed_free_remove. It then defines a new class ggc_ptr_hash that
inherits from both pointer_hash and ggc_remove. It changes all uses of
ggc_hasher to use ggc_ptr_hash instead.
gcc/
* hash-traits.h (ggc_hasher): Rename to...
(ggc_remover): ...this and remove typedefs.
(ggc_cache_hasher): Update accordingly. Add typedefs.
(ggc_ptr_hash): New class.
* hash-table.h: Update comment.
* cfgloop.h (loop_exit_hasher): Inherit from ggc_ptr_hash rather than
ggc_hasher.
* cgraph.h (section_name_hasher, cgraph_edge_hasher): Likewise.
(tree_descriptor_hasher): Likewise.
* cgraph.c (function_version_hasher): Likewise.
* dwarf2out.c (indirect_string_hasher, dwarf_file_hasher): Likewise.
(decl_die_hasher, block_die_hasher, decl_loc_hasher): Likewise.
(dw_loc_list_hasher, addr_hasher): Likewise.
* function.h (used_type_hasher): Likewise.
* function.c (temp_address_hasher): Likewise.
* gimple-ssa.h (tm_restart_hasher, ssa_name_hasher): Likewise.
* libfuncs.h (libfunc_hasher): Likewise.
* lto-streamer.h (decl_state_hasher): Likewise.
* optabs.c (libfunc_decl_hasher): Likewise.
* tree-scalar-evolution.c (scev_info_hasher): Likewise.
* varasm.c (section_hasher, object_block_hasher): Likewise.
(const_rtx_desc_hasher): Likewise.
* config/darwin.c (indirection_hasher, cfstring_hasher): Likewise.
* config/rs6000/rs6000.c (toc_hasher, builtin_hasher): Likewise.
gcc/c-family/
* c-common.c (c_type_hasher): Inherit from ggc_ptr_hash rather than
ggc_hasher.
gcc/cp/
* constexpr.c (constexpr_fundef_hasher): Inherit from ggc_ptr_hash
rather than ggc_hasher.
(constexpr_call_hasher): Likewise.
* cp-tree.h (cxx_int_tree_map_hasher, named_label_hasher): Likewise.
* decl.c (typename_hasher): Likewise.
* mangle.c (conv_type_hasher): Likewise.
* pt.c (spec_hasher): Likewise.
* tree.c (cplus_array_hasher, list_hasher): Likewise.
* typeck2.c (abstract_type_hasher): Likewise.
gcc/fortran/
* trans-decl.c (module_hasher): Likewise.
* trans.h (module_decl_hasher): Likewise.
gcc/java/
* java-tree.h (treetreehasher): Inherit from ggc_ptr_hash
rather than ggc_hasher.
(ict_hasher, type_assertion_hasher): Likewise.
gcc/objc/
* objc-act.c (objc_string_hasher): Inherit from ggc_ptr_hash
rather than ggc_hasher.
Index: gcc/hash-traits.h
===================================================================
--- gcc/hash-traits.h 2015-06-16 09:57:55.899216049 +0100
+++ gcc/hash-traits.h 2015-06-16 09:58:55.658524164 +0100
@@ -121,14 +121,11 @@ pointer_hash <Type>::is_empty (Type *e)
return e == NULL;
}
-/* Hasher for entry in gc memory. */
+/* Remover and marker for entries in gc memory. */
template<typename T>
-struct ggc_hasher
+struct ggc_remove
{
- typedef T value_type;
- typedef T compare_type;
-
static void remove (T &) {}
static void
@@ -155,8 +152,11 @@ struct ggc_hasher
/* Hasher for cache entry in gc memory. */
template<typename T>
-struct ggc_cache_hasher : ggc_hasher<T>
+struct ggc_cache_hasher : ggc_remove<T>
{
+ typedef T value_type;
+ typedef T compare_type;
+
/* Entries are weakly held because this is for caches. */
static void ggc_mx (T &) {}
@@ -179,4 +179,10 @@ struct nofree_ptr_hash : pointer_hash <T
template <typename T>
struct free_ptr_hash : pointer_hash <T>, typed_free_remove <T> {};
+/* Traits for elements that point to gc memory. The pointed-to data
+ must be kept across collections. */
+
+template <typename T>
+struct ggc_ptr_hash : pointer_hash <T>, ggc_remove <T *> {};
+
#endif
Index: gcc/hash-table.h
===================================================================
--- gcc/hash-table.h 2015-06-16 09:57:55.899216049 +0100
+++ gcc/hash-table.h 2015-06-16 10:00:54.221151068 +0100
@@ -91,8 +91,8 @@ Software Foundation; either version 3, o
We compose this into a few steps.
1. Decide on a removal policy for values stored in the table.
- hash-traits.h provides class templates for the two most common
- policies.
+ hash-traits.h provides class templates for the three most common
+ policies:
* typed_free_remove implements the static 'remove' member function
by calling free().
@@ -100,6 +100,11 @@ Software Foundation; either version 3, o
* typed_noop_remove implements the static 'remove' member function
by doing nothing.
+ * ggc_remove implements the static 'remove' member by doing nothing,
+ but instead provides routines for gc marking and for PCH streaming.
+ Use this for garbage-collected data that needs to be preserved across
+ collections.
+
You can use these policies by simply deriving the descriptor type
from one of those class template, with the appropriate argument.
Index: gcc/cfgloop.h
===================================================================
--- gcc/cfgloop.h 2015-06-16 09:57:55.899216049 +0100
+++ gcc/cfgloop.h 2015-06-16 09:57:55.867216425 +0100
@@ -88,7 +88,7 @@ struct GTY ((for_user)) loop_exit {
struct loop_exit *next_e;
};
-struct loop_exit_hasher : ggc_hasher<loop_exit *>
+struct loop_exit_hasher : ggc_ptr_hash<loop_exit>
{
typedef edge compare_type;
Index: gcc/cgraph.h
===================================================================
--- gcc/cgraph.h 2015-06-16 09:57:55.899216049 +0100
+++ gcc/cgraph.h 2015-06-16 09:57:55.871216378 +0100
@@ -44,7 +44,7 @@ struct GTY((for_user)) section_hash_entr
typedef struct section_hash_entry_d section_hash_entry;
-struct section_name_hasher : ggc_hasher<section_hash_entry *>
+struct section_name_hasher : ggc_ptr_hash<section_hash_entry>
{
typedef const char *compare_type;
@@ -783,7 +783,7 @@ enum cgraph_inline_failed_type_t
struct cgraph_edge;
-struct cgraph_edge_hasher : ggc_hasher<cgraph_edge *>
+struct cgraph_edge_hasher : ggc_ptr_hash<cgraph_edge>
{
typedef gimple compare_type;
@@ -2815,7 +2815,7 @@ varpool_node::all_refs_explicit_p ()
&& !force_output);
}
-struct tree_descriptor_hasher : ggc_hasher<constant_descriptor_tree *>
+struct tree_descriptor_hasher : ggc_ptr_hash<constant_descriptor_tree>
{
static hashval_t hash (constant_descriptor_tree *);
static bool equal (constant_descriptor_tree *, constant_descriptor_tree *);
Index: gcc/cgraph.c
===================================================================
--- gcc/cgraph.c 2015-06-16 09:57:55.899216049 +0100
+++ gcc/cgraph.c 2015-06-16 09:57:55.871216378 +0100
@@ -128,7 +128,7 @@ struct cgraph_2node_hook_list {
/* Hash descriptor for cgraph_function_version_info. */
-struct function_version_hasher : ggc_hasher<cgraph_function_version_info *>
+struct function_version_hasher : ggc_ptr_hash<cgraph_function_version_info>
{
static hashval_t hash (cgraph_function_version_info *);
static bool equal (cgraph_function_version_info *,
Index: gcc/dwarf2out.c
===================================================================
--- gcc/dwarf2out.c 2015-06-16 09:57:55.899216049 +0100
+++ gcc/dwarf2out.c 2015-06-16 09:57:55.891216136 +0100
@@ -222,7 +222,7 @@ struct GTY((for_user)) indirect_string_n
unsigned int index;
};
-struct indirect_string_hasher : ggc_hasher<indirect_string_node *>
+struct indirect_string_hasher : ggc_ptr_hash<indirect_string_node>
{
typedef const char *compare_type;
@@ -2798,7 +2798,7 @@ static GTY(()) limbo_die_node *limbo_die
DW_AT_{,MIPS_}linkage_name once their DECL_ASSEMBLER_NAMEs are set. */
static GTY(()) limbo_die_node *deferred_asm_name;
-struct dwarf_file_hasher : ggc_hasher<dwarf_file_data *>
+struct dwarf_file_hasher : ggc_ptr_hash<dwarf_file_data>
{
typedef const char *compare_type;
@@ -2809,7 +2809,7 @@ struct dwarf_file_hasher : ggc_hasher<dw
/* Filenames referenced by this compilation unit. */
static GTY(()) hash_table<dwarf_file_hasher> *file_table;
-struct decl_die_hasher : ggc_hasher<die_node *>
+struct decl_die_hasher : ggc_ptr_hash<die_node>
{
typedef tree compare_type;
@@ -2820,7 +2820,7 @@ struct decl_die_hasher : ggc_hasher<die_
The key is a DECL_UID() which is a unique number identifying each decl. */
static GTY (()) hash_table<decl_die_hasher> *decl_die_table;
-struct block_die_hasher : ggc_hasher<die_struct *>
+struct block_die_hasher : ggc_ptr_hash<die_struct>
{
static hashval_t hash (die_struct *);
static bool equal (die_struct *, die_struct *);
@@ -2884,7 +2884,7 @@ struct GTY ((chain_next ("%h.next"))) ca
};
-struct decl_loc_hasher : ggc_hasher<var_loc_list *>
+struct decl_loc_hasher : ggc_ptr_hash<var_loc_list>
{
typedef const_tree compare_type;
@@ -2914,7 +2914,7 @@ struct GTY ((for_user)) cached_dw_loc_li
};
typedef struct cached_dw_loc_list_def cached_dw_loc_list;
-struct dw_loc_list_hasher : ggc_hasher<cached_dw_loc_list *>
+struct dw_loc_list_hasher : ggc_ptr_hash<cached_dw_loc_list>
{
typedef const_tree compare_type;
@@ -4240,7 +4240,7 @@ AT_loc_list_ptr (dw_attr_ref a)
return &a->dw_attr_val.v.val_loc_list;
}
-struct addr_hasher : ggc_hasher<addr_table_entry *>
+struct addr_hasher : ggc_ptr_hash<addr_table_entry>
{
static hashval_t hash (addr_table_entry *);
static bool equal (addr_table_entry *, addr_table_entry *);
Index: gcc/function.h
===================================================================
--- gcc/function.h 2015-06-16 09:57:55.899216049 +0100
+++ gcc/function.h 2015-06-16 09:57:55.891216136 +0100
@@ -700,7 +700,7 @@ struct GTY((for_user)) types_used_by_var
tree var_decl;
};
-struct used_type_hasher : ggc_hasher<types_used_by_vars_entry *>
+struct used_type_hasher : ggc_ptr_hash<types_used_by_vars_entry>
{
static hashval_t hash (types_used_by_vars_entry *);
static bool equal (types_used_by_vars_entry *, types_used_by_vars_entry *);
Index: gcc/function.c
===================================================================
--- gcc/function.c 2015-06-16 09:57:55.899216049 +0100
+++ gcc/function.c 2015-06-16 09:57:55.891216136 +0100
@@ -575,7 +575,7 @@ struct GTY((for_user)) temp_slot_address
struct temp_slot *temp_slot;
};
-struct temp_address_hasher : ggc_hasher<temp_slot_address_entry *>
+struct temp_address_hasher : ggc_ptr_hash<temp_slot_address_entry>
{
static hashval_t hash (temp_slot_address_entry *);
static bool equal (temp_slot_address_entry *, temp_slot_address_entry *);
Index: gcc/gimple-ssa.h
===================================================================
--- gcc/gimple-ssa.h 2015-06-16 09:57:55.899216049 +0100
+++ gcc/gimple-ssa.h 2015-06-16 09:57:55.891216136 +0100
@@ -34,7 +34,7 @@ struct GTY((for_user)) tm_restart_node {
/* Hasher for tm_restart_node. */
-struct tm_restart_hasher : ggc_hasher<tm_restart_node *>
+struct tm_restart_hasher : ggc_ptr_hash<tm_restart_node>
{
static hashval_t hash (tm_restart_node *n) { return htab_hash_pointer (n); }
@@ -45,7 +45,7 @@ struct tm_restart_hasher : ggc_hasher<tm
}
};
-struct ssa_name_hasher : ggc_hasher<tree>
+struct ssa_name_hasher : ggc_ptr_hash<tree_node>
{
/* Hash a tree in a uid_decl_map. */
Index: gcc/libfuncs.h
===================================================================
--- gcc/libfuncs.h 2015-06-16 09:57:55.899216049 +0100
+++ gcc/libfuncs.h 2015-06-16 09:57:55.891216136 +0100
@@ -61,7 +61,7 @@ struct GTY((for_user)) libfunc_entry {
/* Descriptor for libfunc_entry. */
-struct libfunc_hasher : ggc_hasher<libfunc_entry *>
+struct libfunc_hasher : ggc_ptr_hash<libfunc_entry>
{
static hashval_t hash (libfunc_entry *);
static bool equal (libfunc_entry *, libfunc_entry *);
Index: gcc/lto-streamer.h
===================================================================
--- gcc/lto-streamer.h 2015-06-16 09:57:55.899216049 +0100
+++ gcc/lto-streamer.h 2015-06-16 09:57:55.891216136 +0100
@@ -508,7 +508,7 @@ struct GTY((for_user)) lto_in_decl_state
typedef struct lto_in_decl_state *lto_in_decl_state_ptr;
-struct decl_state_hasher : ggc_hasher<lto_in_decl_state *>
+struct decl_state_hasher : ggc_ptr_hash<lto_in_decl_state>
{
static hashval_t
hash (lto_in_decl_state *s)
Index: gcc/optabs.c
===================================================================
--- gcc/optabs.c 2015-06-16 09:57:55.899216049 +0100
+++ gcc/optabs.c 2015-06-16 09:57:55.895216093 +0100
@@ -6053,7 +6053,7 @@ gen_satfractuns_conv_libfunc (convert_op
/* Hashtable callbacks for libfunc_decls. */
-struct libfunc_decl_hasher : ggc_hasher<tree>
+struct libfunc_decl_hasher : ggc_ptr_hash<tree_node>
{
static hashval_t
hash (tree entry)
Index: gcc/tree-scalar-evolution.c
===================================================================
--- gcc/tree-scalar-evolution.c 2015-06-16 09:57:55.899216049 +0100
+++ gcc/tree-scalar-evolution.c 2015-06-16 09:57:55.895216093 +0100
@@ -341,7 +341,7 @@ static unsigned nb_get_scev = 0;
happen, then it qualifies it with chrec_known. */
tree chrec_known;
-struct scev_info_hasher : ggc_hasher<scev_info_str *>
+struct scev_info_hasher : ggc_ptr_hash<scev_info_str>
{
static hashval_t hash (scev_info_str *i);
static bool equal (const scev_info_str *a, const scev_info_str *b);
Index: gcc/varasm.c
===================================================================
--- gcc/varasm.c 2015-06-16 09:57:55.899216049 +0100
+++ gcc/varasm.c 2015-06-16 09:57:55.895216093 +0100
@@ -190,7 +190,7 @@ #define IN_NAMED_SECTION(DECL) \
((TREE_CODE (DECL) == FUNCTION_DECL || TREE_CODE (DECL) == VAR_DECL) \
&& DECL_SECTION_NAME (DECL) != NULL)
-struct section_hasher : ggc_hasher<section *>
+struct section_hasher : ggc_ptr_hash<section>
{
typedef const char *compare_type;
@@ -201,7 +201,7 @@ struct section_hasher : ggc_hasher<secti
/* Hash table of named sections. */
static GTY(()) hash_table<section_hasher> *section_htab;
-struct object_block_hasher : ggc_hasher<object_block *>
+struct object_block_hasher : ggc_ptr_hash<object_block>
{
typedef const section *compare_type;
@@ -3541,7 +3541,7 @@ struct GTY((chain_next ("%h.next"), for_
int mark;
};
-struct const_rtx_desc_hasher : ggc_hasher<constant_descriptor_rtx *>
+struct const_rtx_desc_hasher : ggc_ptr_hash<constant_descriptor_rtx>
{
static hashval_t hash (constant_descriptor_rtx *);
static bool equal (constant_descriptor_rtx *, constant_descriptor_rtx *);
Index: gcc/config/darwin.c
===================================================================
--- gcc/config/darwin.c 2015-06-16 09:57:55.899216049 +0100
+++ gcc/config/darwin.c 2015-06-16 09:57:55.871216378 +0100
@@ -479,7 +479,7 @@ typedef struct GTY ((for_user)) machopic
bool used;
} machopic_indirection;
-struct indirection_hasher : ggc_hasher<machopic_indirection *>
+struct indirection_hasher : ggc_ptr_hash<machopic_indirection>
{
typedef const char *compare_type;
static hashval_t hash (machopic_indirection *);
@@ -3273,7 +3273,7 @@ typedef struct GTY ((for_user)) cfstring
tree constructor;
} cfstring_descriptor;
-struct cfstring_hasher : ggc_hasher<cfstring_descriptor *>
+struct cfstring_hasher : ggc_ptr_hash<cfstring_descriptor>
{
static hashval_t hash (cfstring_descriptor *);
static bool equal (cfstring_descriptor *, cfstring_descriptor *);
Index: gcc/config/rs6000/rs6000.c
===================================================================
--- gcc/config/rs6000/rs6000.c 2015-06-16 09:57:55.899216049 +0100
+++ gcc/config/rs6000/rs6000.c 2015-06-16 09:57:55.879216280 +0100
@@ -1230,7 +1230,7 @@ struct GTY((for_user)) toc_hash_struct
int labelno;
};
-struct toc_hasher : ggc_hasher<toc_hash_struct *>
+struct toc_hasher : ggc_ptr_hash<toc_hash_struct>
{
static hashval_t hash (toc_hash_struct *);
static bool equal (toc_hash_struct *, toc_hash_struct *);
@@ -1247,7 +1247,7 @@ struct GTY((for_user)) builtin_hash_stru
unsigned char uns_p[4]; /* and whether the types are unsigned. */
};
-struct builtin_hasher : ggc_hasher<builtin_hash_struct *>
+struct builtin_hasher : ggc_ptr_hash<builtin_hash_struct>
{
static hashval_t hash (builtin_hash_struct *);
static bool equal (builtin_hash_struct *, builtin_hash_struct *);
Index: gcc/c-family/c-common.c
===================================================================
--- gcc/c-family/c-common.c 2015-06-16 09:57:55.899216049 +0100
+++ gcc/c-family/c-common.c 2015-06-16 09:57:55.867216425 +0100
@@ -5092,7 +5092,7 @@ c_apply_type_quals_to_decl (int type_qua
}
}
-struct c_type_hasher : ggc_hasher<tree>
+struct c_type_hasher : ggc_ptr_hash<tree_node>
{
static hashval_t hash (tree);
static bool equal (tree, tree);
Index: gcc/cp/constexpr.c
===================================================================
--- gcc/cp/constexpr.c 2015-06-16 09:57:55.899216049 +0100
+++ gcc/cp/constexpr.c 2015-06-16 09:57:55.879216280 +0100
@@ -124,7 +124,7 @@ struct GTY((for_user)) constexpr_fundef
tree body;
};
-struct constexpr_fundef_hasher : ggc_hasher<constexpr_fundef *>
+struct constexpr_fundef_hasher : ggc_ptr_hash<constexpr_fundef>
{
static hashval_t hash (constexpr_fundef *);
static bool equal (constexpr_fundef *, constexpr_fundef *);
@@ -873,7 +873,7 @@ struct GTY((for_user)) constexpr_call {
hashval_t hash;
};
-struct constexpr_call_hasher : ggc_hasher<constexpr_call *>
+struct constexpr_call_hasher : ggc_ptr_hash<constexpr_call>
{
static hashval_t hash (constexpr_call *);
static bool equal (constexpr_call *, constexpr_call *);
Index: gcc/cp/cp-tree.h
===================================================================
--- gcc/cp/cp-tree.h 2015-06-16 09:57:55.899216049 +0100
+++ gcc/cp/cp-tree.h 2015-06-16 09:57:55.879216280 +0100
@@ -1181,7 +1181,7 @@ struct GTY((for_user)) cxx_int_tree_map
tree to;
};
-struct cxx_int_tree_map_hasher : ggc_hasher<cxx_int_tree_map *>
+struct cxx_int_tree_map_hasher : ggc_ptr_hash<cxx_int_tree_map>
{
static hashval_t hash (cxx_int_tree_map *);
static bool equal (cxx_int_tree_map *, cxx_int_tree_map *);
@@ -1189,7 +1189,7 @@ struct cxx_int_tree_map_hasher : ggc_has
struct named_label_entry;
-struct named_label_hasher : ggc_hasher<named_label_entry *>
+struct named_label_hasher : ggc_ptr_hash<named_label_entry>
{
static hashval_t hash (named_label_entry *);
static bool equal (named_label_entry *, named_label_entry *);
Index: gcc/cp/decl.c
===================================================================
--- gcc/cp/decl.c 2015-06-16 09:57:55.899216049 +0100
+++ gcc/cp/decl.c 2015-06-16 09:57:55.883216229 +0100
@@ -3332,7 +3332,7 @@ struct typename_info {
bool class_p;
};
-struct typename_hasher : ggc_hasher<tree>
+struct typename_hasher : ggc_ptr_hash<tree_node>
{
typedef typename_info *compare_type;
Index: gcc/cp/mangle.c
===================================================================
--- gcc/cp/mangle.c 2015-06-16 09:57:55.899216049 +0100
+++ gcc/cp/mangle.c 2015-06-16 09:57:55.883216229 +0100
@@ -3844,7 +3844,7 @@ mangle_thunk (tree fn_decl, const int th
return result;
}
-struct conv_type_hasher : ggc_hasher<tree>
+struct conv_type_hasher : ggc_ptr_hash<tree_node>
{
static hashval_t hash (tree);
static bool equal (tree, tree);
Index: gcc/cp/pt.c
===================================================================
--- gcc/cp/pt.c 2015-06-16 09:57:55.899216049 +0100
+++ gcc/cp/pt.c 2015-06-16 09:57:55.887216180 +0100
@@ -90,7 +90,7 @@ struct GTY((for_user)) spec_entry
tree spec;
};
-struct spec_hasher : ggc_hasher<spec_entry *>
+struct spec_hasher : ggc_ptr_hash<spec_entry>
{
static hashval_t hash (spec_entry *);
static bool equal (spec_entry *, spec_entry *);
Index: gcc/cp/tree.c
===================================================================
--- gcc/cp/tree.c 2015-06-16 09:57:55.899216049 +0100
+++ gcc/cp/tree.c 2015-06-16 09:57:55.887216180 +0100
@@ -737,7 +737,7 @@ struct cplus_array_info
tree domain;
};
-struct cplus_array_hasher : ggc_hasher<tree>
+struct cplus_array_hasher : ggc_ptr_hash<tree_node>
{
typedef cplus_array_info *compare_type;
@@ -1715,7 +1715,7 @@ struct list_proxy
tree chain;
};
-struct list_hasher : ggc_hasher<tree>
+struct list_hasher : ggc_ptr_hash<tree_node>
{
typedef list_proxy *compare_type;
Index: gcc/cp/typeck2.c
===================================================================
--- gcc/cp/typeck2.c 2015-06-16 09:57:55.899216049 +0100
+++ gcc/cp/typeck2.c 2015-06-16 09:57:55.887216180 +0100
@@ -157,7 +157,7 @@ struct GTY((chain_next ("%h.next"), for_
struct pending_abstract_type* next;
};
-struct abstract_type_hasher : ggc_hasher<pending_abstract_type *>
+struct abstract_type_hasher : ggc_ptr_hash<pending_abstract_type>
{
typedef tree compare_type;
static hashval_t hash (pending_abstract_type *);
Index: gcc/fortran/trans-decl.c
===================================================================
--- gcc/fortran/trans-decl.c 2015-06-16 09:57:55.899216049 +0100
+++ gcc/fortran/trans-decl.c 2015-06-16 09:57:55.891216136 +0100
@@ -4363,7 +4363,7 @@ gfc_trans_deferred_vars (gfc_symbol * pr
gfc_add_init_cleanup (block, gfc_finish_block (&tmpblock), NULL_TREE);
}
-struct module_hasher : ggc_hasher<module_htab_entry *>
+struct module_hasher : ggc_ptr_hash<module_htab_entry>
{
typedef const char *compare_type;
Index: gcc/fortran/trans.h
===================================================================
--- gcc/fortran/trans.h 2015-06-16 09:57:55.899216049 +0100
+++ gcc/fortran/trans.h 2015-06-16 09:57:55.891216136 +0100
@@ -598,7 +598,7 @@ void gfc_generate_module_vars (gfc_names
/* Get the appropriate return statement for a procedure. */
tree gfc_generate_return (void);
-struct module_decl_hasher : ggc_hasher<tree_node *>
+struct module_decl_hasher : ggc_ptr_hash<tree_node>
{
typedef const char *compare_type;
Index: gcc/java/java-tree.h
===================================================================
--- gcc/java/java-tree.h 2015-06-16 09:57:55.899216049 +0100
+++ gcc/java/java-tree.h 2015-06-16 09:57:55.891216136 +0100
@@ -714,7 +714,7 @@ struct GTY((for_user)) treetreehash_entr
tree value;
};
-struct treetreehasher : ggc_hasher<treetreehash_entry *>
+struct treetreehasher : ggc_ptr_hash<treetreehash_entry>
{
typedef tree compare_type;
@@ -722,7 +722,7 @@ struct treetreehasher : ggc_hasher<treet
static bool equal (treetreehash_entry *, tree);
};
-struct ict_hasher : ggc_hasher<tree_node *>
+struct ict_hasher : ggc_ptr_hash<tree_node>
{
static hashval_t hash (tree t) { return htab_hash_pointer (t); }
static bool equal (tree a, tree b) { return a == b; }
@@ -797,7 +797,7 @@ typedef struct GTY((for_user)) type_asse
tree op2; /* Second operand. */
} type_assertion;
-struct type_assertion_hasher : ggc_hasher<type_assertion *>
+struct type_assertion_hasher : ggc_ptr_hash<type_assertion>
{
static hashval_t hash (type_assertion *);
static bool equal (type_assertion *, type_assertion *);
Index: gcc/objc/objc-act.c
===================================================================
--- gcc/objc/objc-act.c 2015-06-16 09:57:55.899216049 +0100
+++ gcc/objc/objc-act.c 2015-06-16 09:57:55.895216093 +0100
@@ -268,7 +268,7 @@ struct GTY((for_user)) string_descriptor
tree constructor;
};
-struct objc_string_hasher : ggc_hasher<string_descriptor *>
+struct objc_string_hasher : ggc_ptr_hash<string_descriptor>
{
static hashval_t hash (string_descriptor *);
static bool equal (string_descriptor *, string_descriptor *);