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
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);
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. */