tree-ssa-sink.c (sink_code_in_bb): Don't stop sinking after sinking the last stmt in a BB.
* tree-ssa-sink.c (sink_code_in_bb): Don't stop sinking after sinking the last stmt in a BB. From-SVN: r128913
This commit is contained in:
parent
a64036a75c
commit
9a2875939a
@ -1,3 +1,8 @@
|
||||
2007-10-01 Alexandre Oliva <aoliva@redhat.com>
|
||||
|
||||
* tree-ssa-sink.c (sink_code_in_bb): Don't stop sinking after
|
||||
sinking the last stmt in a BB.
|
||||
|
||||
2007-10-01 Alexandre Oliva <aoliva@redhat.com>
|
||||
|
||||
PR middle-end/22156
|
||||
|
@ -433,6 +433,7 @@ sink_code_in_bb (basic_block bb)
|
||||
block_stmt_iterator bsi;
|
||||
edge_iterator ei;
|
||||
edge e;
|
||||
bool last = true;
|
||||
|
||||
/* If this block doesn't dominate anything, there can't be any place to sink
|
||||
the statements to. */
|
||||
@ -454,6 +455,7 @@ sink_code_in_bb (basic_block bb)
|
||||
{
|
||||
if (!bsi_end_p (bsi))
|
||||
bsi_prev (&bsi);
|
||||
last = false;
|
||||
continue;
|
||||
}
|
||||
if (dump_file)
|
||||
@ -472,6 +474,19 @@ sink_code_in_bb (basic_block bb)
|
||||
bsi_move_before (&bsi, &tobsi);
|
||||
|
||||
sink_stats.sunk++;
|
||||
|
||||
/* If we've just removed the last statement of the BB, the
|
||||
bsi_end_p() test below would fail, but bsi_prev() would have
|
||||
succeeded, and we want it to succeed. So we keep track of
|
||||
whether we're at the last statement and pick up the new last
|
||||
statement. */
|
||||
if (last)
|
||||
{
|
||||
bsi = bsi_last (bb);
|
||||
continue;
|
||||
}
|
||||
|
||||
last = false;
|
||||
if (!bsi_end_p (bsi))
|
||||
bsi_prev (&bsi);
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user