+2019-11-21 Richard Biener <rguenther@suse.de>
+
+ * tree-ssa-structalias.c (equiv_class_hasher): Change to nofree.
+ (equiv_class_obstack): New.
+ (equiv_class_lookup_or_add): Allocate from equiv_class_obstack.
+ (perform_var_substitution): Initialize equiv_class_obstack.
+ (free_var_substitution_info): Free equiv_class_obstack.
+
2019-11-20 Jan Hubicka <jh@suse.cz>
* ipa-inline.c (want_early_inline_function_p): Do not estimate
/* Equiv_class_label hashtable helpers. */
-struct equiv_class_hasher : free_ptr_hash <equiv_class_label>
+struct equiv_class_hasher : nofree_ptr_hash <equiv_class_label>
{
static inline hashval_t hash (const equiv_class_label *);
static inline bool equal (const equiv_class_label *,
classes. */
static hash_table<equiv_class_hasher> *location_equiv_class_table;
+struct obstack equiv_class_obstack;
+
/* Lookup a equivalence class in TABLE by the bitmap of LABELS with
hash HAS it contains. Sets *REF_LABELS to the bitmap LABELS
is equivalent to. */
slot = table->find_slot (&ecl, INSERT);
if (!*slot)
{
- *slot = XNEW (struct equiv_class_label);
+ *slot = XOBNEW (&equiv_class_obstack, struct equiv_class_label);
(*slot)->labels = labels;
(*slot)->hashcode = ecl.hashcode;
(*slot)->equivalence_class = 0;
scc_info *si = new scc_info (size);
bitmap_obstack_initialize (&iteration_obstack);
+ gcc_obstack_init (&equiv_class_obstack);
pointer_equiv_class_table = new hash_table<equiv_class_hasher> (511);
location_equiv_class_table
= new hash_table<equiv_class_hasher> (511);
pointer_equiv_class_table = NULL;
delete location_equiv_class_table;
location_equiv_class_table = NULL;
+ obstack_free (&equiv_class_obstack, NULL);
bitmap_obstack_release (&iteration_obstack);
}