Commit b9bebd7f by Martin Jambor Committed by Martin Jambor

tree-ssa-ccp.c (insert_clobbers_for_var): Do not assert that there is a…

tree-ssa-ccp.c (insert_clobbers_for_var): Do not assert that there is a builtin_stack_save in a dominating BB.

2012-03-30  Martin Jambor  <mjambor@suse.cz>

	* tree-ssa-ccp.c (insert_clobbers_for_var): Do not assert that there
	is a builtin_stack_save in a dominating BB.

From-SVN: r185982
parent a15d0d03
2012-03-30 Martin Jambor <mjambor@suse.cz>
* tree-ssa-ccp.c (insert_clobbers_for_var): Do not assert that there
is a builtin_stack_save in a dominating BB.
2012-03-29 Uros Bizjak <ubizjak@gmail.com> 2012-03-29 Uros Bizjak <ubizjak@gmail.com>
* config/i386/sse.md (avx_h<plusminus_insn>v4df3): Fix results * config/i386/sse.md (avx_h<plusminus_insn>v4df3): Fix results
......
...@@ -1764,23 +1764,25 @@ gsi_prev_dom_bb_nondebug (gimple_stmt_iterator *i) ...@@ -1764,23 +1764,25 @@ gsi_prev_dom_bb_nondebug (gimple_stmt_iterator *i)
} }
/* Find a BUILT_IN_STACK_SAVE dominating gsi_stmt (I), and insert /* Find a BUILT_IN_STACK_SAVE dominating gsi_stmt (I), and insert
a clobber of VAR before each matching BUILT_IN_STACK_RESTORE. */ a clobber of VAR before each matching BUILT_IN_STACK_RESTORE.
It is possible that BUILT_IN_STACK_SAVE cannot be find in a dominator when a
previous pass (such as DOM) duplicated it along multiple paths to a BB. In
that case the function gives up without inserting the clobbers. */
static void static void
insert_clobbers_for_var (gimple_stmt_iterator i, tree var) insert_clobbers_for_var (gimple_stmt_iterator i, tree var)
{ {
bool save_found;
gimple stmt; gimple stmt;
tree saved_val; tree saved_val;
htab_t visited = NULL; htab_t visited = NULL;
for (save_found = false; !gsi_end_p (i); gsi_prev_dom_bb_nondebug (&i)) for (; !gsi_end_p (i); gsi_prev_dom_bb_nondebug (&i))
{ {
stmt = gsi_stmt (i); stmt = gsi_stmt (i);
if (!gimple_call_builtin_p (stmt, BUILT_IN_STACK_SAVE)) if (!gimple_call_builtin_p (stmt, BUILT_IN_STACK_SAVE))
continue; continue;
save_found = true;
saved_val = gimple_call_lhs (stmt); saved_val = gimple_call_lhs (stmt);
if (saved_val == NULL_TREE) if (saved_val == NULL_TREE)
...@@ -1792,7 +1794,6 @@ insert_clobbers_for_var (gimple_stmt_iterator i, tree var) ...@@ -1792,7 +1794,6 @@ insert_clobbers_for_var (gimple_stmt_iterator i, tree var)
if (visited != NULL) if (visited != NULL)
htab_delete (visited); htab_delete (visited);
gcc_assert (save_found);
} }
/* Detects a __builtin_alloca_with_align with constant size argument. Declares /* Detects a __builtin_alloca_with_align with constant size argument. Declares
......
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