On 06/16/2015 03:01 AM, Richard Sandiford wrote:
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.
Same concern as #5 & #6, multiple inheritance.  Otherwise its fine.



Reply via email to