diff options
author | Trevor Saunders <tsaunders@mozilla.com> | 2014-08-02 11:23:49 +0000 |
---|---|---|
committer | Trevor Saunders <tbsaunde@gcc.gnu.org> | 2014-08-02 11:23:49 +0000 |
commit | 6e2830c3dbe0d4972519ddd44bd1b15b2b274ba2 (patch) | |
tree | f0fb192e856fa98b7d91e225ff958dfcc1f602df /gcc/tree.c | |
parent | 2df06cec0a2fe611c5487bf54c4ef8e3b2b30543 (diff) | |
download | gcc-6e2830c3dbe0d4972519ddd44bd1b15b2b274ba2.zip gcc-6e2830c3dbe0d4972519ddd44bd1b15b2b274ba2.tar.gz gcc-6e2830c3dbe0d4972519ddd44bd1b15b2b274ba2.tar.bz2 |
add a hash_set based on hash_table
This allows us to replace the usage of pointer_set outside of
pointer_map with a nicer interface.
gcc/ada/
* gcc-interface/trans.c: Use hash_set instead of pointer_set.
gcc/c-family/
* c-gimplify.c: Use hash_set instead of pointer_set.
gcc/c/
* c-decl.c: Use hash_set instead of pointer_set.
gcc/cp/
* class.c, cp-gimplify.c, cp-tree.h, decl.c, decl2.c, error.c,
method.c, name-lookup.c, pt.c, semantics.c, tree.c: Use hash_set
instead of pointer_set.
gcc/fortran/
* openmp.c, trans-decl.c: Use hash_set instead of pointer_set.
gcc/
* hash-set.h: new File.
* cfgexpand.c, cfgloop.c, cgraph.c, cgraphbuild.c, cgraphunit.c,
cprop.c, cse.c, gimple-walk.c, gimple-walk.h, gimplify.c, godump.c,
ipa-devirt.c, ipa-pure-const.c, ipa-visibility.c, ipa.c, lto-cgraph.c,
lto-streamer-out.c, stmt.c, tree-cfg.c, tree-core.h, tree-eh.c,
tree-inline.c, tree-inline.h, tree-nested.c, tree-pretty-print.c,
tree-ssa-loop-niter.c, tree-ssa-phiopt.c, tree-ssa-threadedge.c,
tree-ssa-uninit.c, tree.c, tree.h, value-prof.c, varasm.c,
varpool.c: Use hash_set instead of pointer_set.
gcc/lto/
* lto-partition.c, lto-partition.h: Use hash_set instead of
pointer_set.
From-SVN: r213516
Diffstat (limited to 'gcc/tree.c')
-rw-r--r-- | gcc/tree.c | 22 |
1 files changed, 10 insertions, 12 deletions
@@ -5143,7 +5143,7 @@ struct free_lang_data_d vec<tree> worklist; /* Set of traversed objects. Used to avoid duplicate visits. */ - struct pointer_set_t *pset; + hash_set<tree> *pset; /* Array of symbols to process with free_lang_data_in_decl. */ vec<tree> decls; @@ -5208,7 +5208,7 @@ add_tree_to_fld_list (tree t, struct free_lang_data_d *fld) static inline void fld_worklist_push (tree t, struct free_lang_data_d *fld) { - if (t && !is_lang_specific (t) && !pointer_set_contains (fld->pset, t)) + if (t && !is_lang_specific (t) && !fld->pset->contains (t)) fld->worklist.safe_push ((t)); } @@ -5374,7 +5374,7 @@ find_decls_types (tree t, struct free_lang_data_d *fld) { while (1) { - if (!pointer_set_contains (fld->pset, t)) + if (!fld->pset->contains (t)) walk_tree (&t, find_decls_types_r, fld, fld->pset); if (fld->worklist.is_empty ()) break; @@ -5584,7 +5584,7 @@ free_lang_data_in_cgraph (void) alias_pair *p; /* Initialize sets and arrays to store referenced decls and types. */ - fld.pset = pointer_set_create (); + fld.pset = new hash_set<tree>; fld.worklist.create (0); fld.decls.create (100); fld.types.create (100); @@ -5614,7 +5614,7 @@ free_lang_data_in_cgraph (void) FOR_EACH_VEC_ELT (fld.types, i, t) free_lang_data_in_type (t); - pointer_set_destroy (fld.pset); + delete fld.pset; fld.worklist.release (); fld.decls.release (); fld.types.release (); @@ -10824,7 +10824,7 @@ num_ending_zeros (const_tree x) static tree walk_type_fields (tree type, walk_tree_fn func, void *data, - struct pointer_set_t *pset, walk_tree_lh lh) + hash_set<tree> *pset, walk_tree_lh lh) { tree result = NULL_TREE; @@ -10906,7 +10906,7 @@ walk_type_fields (tree type, walk_tree_fn func, void *data, tree walk_tree_1 (tree *tp, walk_tree_fn func, void *data, - struct pointer_set_t *pset, walk_tree_lh lh) + hash_set<tree> *pset, walk_tree_lh lh) { enum tree_code code; int walk_subtrees; @@ -10927,7 +10927,7 @@ walk_tree_1 (tree *tp, walk_tree_fn func, void *data, /* Don't walk the same tree twice, if the user has requested that we avoid doing so. */ - if (pset && pointer_set_insert (pset, *tp)) + if (pset && pset->add (*tp)) return NULL_TREE; /* Call the function. */ @@ -11242,11 +11242,9 @@ walk_tree_without_duplicates_1 (tree *tp, walk_tree_fn func, void *data, walk_tree_lh lh) { tree result; - struct pointer_set_t *pset; - pset = pointer_set_create (); - result = walk_tree_1 (tp, func, data, pset, lh); - pointer_set_destroy (pset); + hash_set<tree> pset; + result = walk_tree_1 (tp, func, data, &pset, lh); return result; } |