diff options
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/ChangeLog | 6 | ||||
-rw-r--r-- | gcc/tree-ssa-uncprop.c | 22 |
2 files changed, 8 insertions, 20 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 452f7247..cea194b 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,5 +1,11 @@ 2015-11-24 Trevor Saunders <tbsaunde+gcc@tbsaunde.org> + * tree-ssa-uncprop.c (struct val_ssa_equiv_hash_traits): Remove. + (val_ssa_equiv_hash_traits::remove): Likewise. + (pass_uncprop::execute): Adjust. + +2015-11-24 Trevor Saunders <tbsaunde+gcc@tbsaunde.org> + * hash-map-traits.h (simple_hashmap_traits ::remove): call destructors on values that are being removed. * mem-stats.h (hash_map): Pass type of values to diff --git a/gcc/tree-ssa-uncprop.c b/gcc/tree-ssa-uncprop.c index 23b4ca2..a60184e 100644 --- a/gcc/tree-ssa-uncprop.c +++ b/gcc/tree-ssa-uncprop.c @@ -275,27 +275,10 @@ struct equiv_hash_elt vec<tree> equivalences; }; -/* Value to ssa name equivalence hashtable helpers. */ - -struct val_ssa_equiv_hash_traits : simple_hashmap_traits <tree_operand_hash, - vec<tree> > -{ - template<typename T> static inline void remove (T &); -}; - -/* Free an instance of equiv_hash_elt. */ - -template<typename T> -inline void -val_ssa_equiv_hash_traits::remove (T &elt) -{ - elt.m_value.release (); -} - /* Global hash table implementing a mapping from invariant values to a list of SSA_NAMEs which have the same value. We might be able to reuse tree-vn for this code. */ -static hash_map<tree, vec<tree>, val_ssa_equiv_hash_traits> *val_ssa_equiv; +static hash_map<tree, auto_vec<tree> > *val_ssa_equiv; static void uncprop_into_successor_phis (basic_block); @@ -518,8 +501,7 @@ pass_uncprop::execute (function *fun) associate_equivalences_with_edges (); /* Create our global data structures. */ - val_ssa_equiv - = new hash_map<tree, vec<tree>, val_ssa_equiv_hash_traits> (1024); + val_ssa_equiv = new hash_map<tree, auto_vec<tree> > (1024); /* We're going to do a dominator walk, so ensure that we have dominance information. */ |