aboutsummaryrefslogtreecommitdiff
path: root/gcc/tree.c
diff options
context:
space:
mode:
authorTrevor Saunders <tsaunders@mozilla.com>2014-08-02 11:23:49 +0000
committerTrevor Saunders <tbsaunde@gcc.gnu.org>2014-08-02 11:23:49 +0000
commit6e2830c3dbe0d4972519ddd44bd1b15b2b274ba2 (patch)
treef0fb192e856fa98b7d91e225ff958dfcc1f602df /gcc/tree.c
parent2df06cec0a2fe611c5487bf54c4ef8e3b2b30543 (diff)
downloadgcc-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.c22
1 files changed, 10 insertions, 12 deletions
diff --git a/gcc/tree.c b/gcc/tree.c
index 074be6e..d95cf78 100644
--- a/gcc/tree.c
+++ b/gcc/tree.c
@@ -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;
}