Commit 74d8fa44 by Richard Guenther Committed by Richard Biener

tree-ssa-structalias.c (new_var_info): Allocate oldsolution lazily.

2011-07-20  Richard Guenther  <rguenther@suse.de>

	* tree-ssa-structalias.c (new_var_info): Allocate oldsolution
	lazily.
	(unify_nodes): Deal with that.
	(solve_graph): Likewise.

From-SVN: r176505
parent d28d4381
2011-07-20 Richard Guenther <rguenther@suse.de>
* tree-ssa-structalias.c (new_var_info): Allocate oldsolution
lazily.
(unify_nodes): Deal with that.
(solve_graph): Likewise.
2011-07-20 Chung-Lin Tang <cltang@codesourcery.com> 2011-07-20 Chung-Lin Tang <cltang@codesourcery.com>
* config/arm/arm.c (arm_canonicalize_comparison): Add case to * config/arm/arm.c (arm_canonicalize_comparison): Add case to
......
...@@ -362,7 +362,7 @@ new_var_info (tree t, const char *name) ...@@ -362,7 +362,7 @@ new_var_info (tree t, const char *name)
|| (TREE_CODE (t) == VAR_DECL || (TREE_CODE (t) == VAR_DECL
&& DECL_HARD_REGISTER (t))); && DECL_HARD_REGISTER (t)));
ret->solution = BITMAP_ALLOC (&pta_obstack); ret->solution = BITMAP_ALLOC (&pta_obstack);
ret->oldsolution = BITMAP_ALLOC (&oldpta_obstack); ret->oldsolution = NULL;
ret->next = NULL; ret->next = NULL;
stats.total_vars++; stats.total_vars++;
...@@ -1504,13 +1504,12 @@ unify_nodes (constraint_graph_t graph, unsigned int to, unsigned int from, ...@@ -1504,13 +1504,12 @@ unify_nodes (constraint_graph_t graph, unsigned int to, unsigned int from,
} }
BITMAP_FREE (get_varinfo (from)->solution); BITMAP_FREE (get_varinfo (from)->solution);
if (get_varinfo (from)->oldsolution)
BITMAP_FREE (get_varinfo (from)->oldsolution); BITMAP_FREE (get_varinfo (from)->oldsolution);
if (stats.iterations > 0) if (stats.iterations > 0
{ && get_varinfo (to)->oldsolution)
BITMAP_FREE (get_varinfo (to)->oldsolution); BITMAP_FREE (get_varinfo (to)->oldsolution);
get_varinfo (to)->oldsolution = BITMAP_ALLOC (&oldpta_obstack);
}
} }
if (valid_graph_edge (graph, to, to)) if (valid_graph_edge (graph, to, to))
{ {
...@@ -2544,18 +2543,27 @@ solve_graph (constraint_graph_t graph) ...@@ -2544,18 +2543,27 @@ solve_graph (constraint_graph_t graph)
constraint_t c; constraint_t c;
bitmap solution; bitmap solution;
VEC(constraint_t,heap) *complex = graph->complex[i]; VEC(constraint_t,heap) *complex = graph->complex[i];
varinfo_t vi = get_varinfo (i);
bool solution_empty; bool solution_empty;
/* Compute the changed set of solution bits. */ /* Compute the changed set of solution bits. */
bitmap_and_compl (pts, get_varinfo (i)->solution, if (vi->oldsolution)
get_varinfo (i)->oldsolution); bitmap_and_compl (pts, vi->solution, vi->oldsolution);
else
bitmap_copy (pts, vi->solution);
if (bitmap_empty_p (pts)) if (bitmap_empty_p (pts))
continue; continue;
bitmap_ior_into (get_varinfo (i)->oldsolution, pts); if (vi->oldsolution)
bitmap_ior_into (vi->oldsolution, pts);
else
{
vi->oldsolution = BITMAP_ALLOC (&oldpta_obstack);
bitmap_copy (vi->oldsolution, pts);
}
solution = get_varinfo (i)->solution; solution = vi->solution;
solution_empty = bitmap_empty_p (solution); solution_empty = bitmap_empty_p (solution);
/* Process the complex constraints */ /* Process the complex constraints */
......
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