(merge_blocks_move_predecessor_nojumps): Re-order the basic block records so...

(merge_blocks_move_predecessor_nojumps): Re-order the basic
block records so that merge_blocks_nomove will clean up correctly.

From-SVN: r30100
This commit is contained in:
Richard Earnshaw 1999-10-20 12:39:01 +00:00 committed by Richard Earnshaw
parent dc9e9f3f88
commit ee7b8369c2
2 changed files with 16 additions and 3 deletions

View File

@ -2,6 +2,9 @@ Wed Oct 20 10:46:41 1999 Richard Earnshaw (rearnsha@arm.com)
* jump.c (jump_optimize_1): More accurately detect casesi insns.
* flow.c (merge_blocks_move_predecessor_nojumps): Re-order the basic
block records so that merge_blocks_nomove will clean up correctly.
Tue Oct 19 23:43:50 1999 Jeffrey A Law (law@cygnus.com)
* pa.md (call, call_value): Do not emit a blockage after restoring

View File

@ -2006,6 +2006,7 @@ merge_blocks_move_predecessor_nojumps (a, b)
basic_block a, b;
{
rtx start, end, insertpoint, barrier;
int index;
start = a->head;
end = a->end;
@ -2037,15 +2038,24 @@ merge_blocks_move_predecessor_nojumps (a, b)
/* Scramble the insn chain. */
reorder_insns (start, end, insertpoint);
/* Now blocks A and B are contiguous. Merge them. */
merge_blocks_nomove (a, b);
if (rtl_dump_file)
{
fprintf (rtl_dump_file, "Moved block %d before %d and merged.\n",
a->index, b->index);
}
/* Swap the records for the two blocks around. Although we are deleting B,
A is now where B was and we want to compact the BB array from where
A used to be. */
BASIC_BLOCK(a->index) = b;
BASIC_BLOCK(b->index) = a;
index = a->index;
a->index = b->index;
b->index = index;
/* Now blocks A and B are contiguous. Merge them. */
merge_blocks_nomove (a, b);
return 1;
}