Commit a3d2f8e2 by Richard Biener Committed by Richard Biener

cfganal.c (pre_and_rev_post_order_compute_fn): Use an auto_bb_flag instead of an…

cfganal.c (pre_and_rev_post_order_compute_fn): Use an auto_bb_flag instead of an sbitmap for visited handling.

2019-11-21  Richard Biener  <rguenther@suse.de>

	* cfganal.c (pre_and_rev_post_order_compute_fn): Use an
	auto_bb_flag instead of an sbitmap for visited handling.
	* lra.c (lra_insn_recog_data_pool): New.
	(free_insn_recog_data): Adjust.
	(finish_insn_recog_data): Release lra_insn_recog_data_pool.
	(lra_set_insn_recog_data): Allocate from lra_insn_recog_data_pool.
	* 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.

From-SVN: r278543
parent 49e26500
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> 2019-11-20 Jan Hubicka <jh@suse.cz>
* ipa-inline.c (want_early_inline_function_p): Do not estimate * ipa-inline.c (want_early_inline_function_p): Do not estimate
...@@ -1911,7 +1911,7 @@ typedef const struct equiv_class_label *const_equiv_class_label_t; ...@@ -1911,7 +1911,7 @@ typedef const struct equiv_class_label *const_equiv_class_label_t;
/* Equiv_class_label hashtable helpers. */ /* 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 hashval_t hash (const equiv_class_label *);
static inline bool equal (const equiv_class_label *, static inline bool equal (const equiv_class_label *,
...@@ -1944,6 +1944,8 @@ static hash_table<equiv_class_hasher> *pointer_equiv_class_table; ...@@ -1944,6 +1944,8 @@ static hash_table<equiv_class_hasher> *pointer_equiv_class_table;
classes. */ classes. */
static hash_table<equiv_class_hasher> *location_equiv_class_table; 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 /* Lookup a equivalence class in TABLE by the bitmap of LABELS with
hash HAS it contains. Sets *REF_LABELS to the bitmap LABELS hash HAS it contains. Sets *REF_LABELS to the bitmap LABELS
is equivalent to. */ is equivalent to. */
...@@ -1960,7 +1962,7 @@ equiv_class_lookup_or_add (hash_table<equiv_class_hasher> *table, ...@@ -1960,7 +1962,7 @@ equiv_class_lookup_or_add (hash_table<equiv_class_hasher> *table,
slot = table->find_slot (&ecl, INSERT); slot = table->find_slot (&ecl, INSERT);
if (!*slot) if (!*slot)
{ {
*slot = XNEW (struct equiv_class_label); *slot = XOBNEW (&equiv_class_obstack, struct equiv_class_label);
(*slot)->labels = labels; (*slot)->labels = labels;
(*slot)->hashcode = ecl.hashcode; (*slot)->hashcode = ecl.hashcode;
(*slot)->equivalence_class = 0; (*slot)->equivalence_class = 0;
...@@ -2334,6 +2336,7 @@ perform_var_substitution (constraint_graph_t graph) ...@@ -2334,6 +2336,7 @@ perform_var_substitution (constraint_graph_t graph)
scc_info *si = new scc_info (size); scc_info *si = new scc_info (size);
bitmap_obstack_initialize (&iteration_obstack); bitmap_obstack_initialize (&iteration_obstack);
gcc_obstack_init (&equiv_class_obstack);
pointer_equiv_class_table = new hash_table<equiv_class_hasher> (511); pointer_equiv_class_table = new hash_table<equiv_class_hasher> (511);
location_equiv_class_table location_equiv_class_table
= new hash_table<equiv_class_hasher> (511); = new hash_table<equiv_class_hasher> (511);
...@@ -2473,6 +2476,7 @@ free_var_substitution_info (class scc_info *si) ...@@ -2473,6 +2476,7 @@ free_var_substitution_info (class scc_info *si)
pointer_equiv_class_table = NULL; pointer_equiv_class_table = NULL;
delete location_equiv_class_table; delete location_equiv_class_table;
location_equiv_class_table = NULL; location_equiv_class_table = NULL;
obstack_free (&equiv_class_obstack, NULL);
bitmap_obstack_release (&iteration_obstack); bitmap_obstack_release (&iteration_obstack);
} }
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment