Force block enders to be simulated once.
From-SVN: r151273
This commit is contained in:
parent
fd58da50fd
commit
cd6ea7a2df
3 changed files with 26 additions and 6 deletions
|
@ -1,3 +1,10 @@
|
|||
2009-09-01 Richard Henderson <rth@redhat.com>
|
||||
|
||||
* tree-ssa-ccp.c (ccp_initialize): Make sure to simulate
|
||||
stmt_ends_pp_p statements at least once.
|
||||
* tree-vrp.c (vrp_initialize): Likewise.
|
||||
(vrp_visit_stmt): Be prepared for non-interesting stmts.
|
||||
|
||||
2009-09-01 Dodji Seketeli <dodji@redhat.com>
|
||||
|
||||
PR bootstrap/41205
|
||||
|
|
|
@ -650,7 +650,15 @@ ccp_initialize (void)
|
|||
for (i = gsi_start_bb (bb); !gsi_end_p (i); gsi_next (&i))
|
||||
{
|
||||
gimple stmt = gsi_stmt (i);
|
||||
bool is_varying = surely_varying_stmt_p (stmt);
|
||||
bool is_varying;
|
||||
|
||||
/* If the statement is a control insn, then we do not
|
||||
want to avoid simulating the statement once. Failure
|
||||
to do so means that those edges will never get added. */
|
||||
if (stmt_ends_bb_p (stmt))
|
||||
is_varying = false;
|
||||
else
|
||||
is_varying = surely_varying_stmt_p (stmt);
|
||||
|
||||
if (is_varying)
|
||||
{
|
||||
|
|
|
@ -5317,7 +5317,12 @@ vrp_initialize (void)
|
|||
{
|
||||
gimple stmt = gsi_stmt (si);
|
||||
|
||||
if (!stmt_interesting_for_vrp (stmt))
|
||||
/* If the statement is a control insn, then we do not
|
||||
want to avoid simulating the statement once. Failure
|
||||
to do so means that those edges will never get added. */
|
||||
if (stmt_ends_bb_p (stmt))
|
||||
prop_set_simulate_again (stmt, true);
|
||||
else if (!stmt_interesting_for_vrp (stmt))
|
||||
{
|
||||
ssa_op_iter i;
|
||||
tree def;
|
||||
|
@ -5326,9 +5331,7 @@ vrp_initialize (void)
|
|||
prop_set_simulate_again (stmt, false);
|
||||
}
|
||||
else
|
||||
{
|
||||
prop_set_simulate_again (stmt, true);
|
||||
}
|
||||
prop_set_simulate_again (stmt, true);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -6087,7 +6090,9 @@ vrp_visit_stmt (gimple stmt, edge *taken_edge_p, tree *output_p)
|
|||
fprintf (dump_file, "\n");
|
||||
}
|
||||
|
||||
if (is_gimple_assign (stmt) || is_gimple_call (stmt))
|
||||
if (!stmt_interesting_for_vrp (stmt))
|
||||
gcc_assert (stmt_ends_bb_p (stmt));
|
||||
else if (is_gimple_assign (stmt) || is_gimple_call (stmt))
|
||||
{
|
||||
/* In general, assignments with virtual operands are not useful
|
||||
for deriving ranges, with the obvious exception of calls to
|
||||
|
|
Loading…
Add table
Reference in a new issue