+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
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)
{
{
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;
prop_set_simulate_again (stmt, false);
}
else
- {
- prop_set_simulate_again (stmt, true);
- }
+ prop_set_simulate_again (stmt, true);
}
}
}
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