cfgcleanup.c (merge_blocks_move_successor_nojumps): Don't leave ADDR_VEC or ADDR_DIFF_VEC jump insns as part of the basic block...
* cfgcleanup.c (merge_blocks_move_successor_nojumps): Don't leave ADDR_VEC or ADDR_DIFF_VEC jump insns as part of the basic block once merging is complete. From-SVN: r45730
This commit is contained in:
parent
97a4f671ac
commit
f62ce55b12
@ -1,3 +1,9 @@
|
|||||||
|
21-09-2001 Richard Earnshaw (reanrsha@arm.com)
|
||||||
|
|
||||||
|
* cfgcleanup.c (merge_blocks_move_successor_nojumps): Don't leave
|
||||||
|
ADDR_VEC or ADDR_DIFF_VEC jump insns as part of the basic block
|
||||||
|
once merging is complete.
|
||||||
|
|
||||||
Fri Sep 21 11:20:12 2001 Richard Kenner <kenner@vlsi1.ultra.nyu.edu>
|
Fri Sep 21 11:20:12 2001 Richard Kenner <kenner@vlsi1.ultra.nyu.edu>
|
||||||
|
|
||||||
* integrate.c (allocate_initial_values): Eliminate unused arg warning.
|
* integrate.c (allocate_initial_values): Eliminate unused arg warning.
|
||||||
|
@ -319,8 +319,9 @@ static void
|
|||||||
merge_blocks_move_successor_nojumps (a, b)
|
merge_blocks_move_successor_nojumps (a, b)
|
||||||
basic_block a, b;
|
basic_block a, b;
|
||||||
{
|
{
|
||||||
rtx barrier;
|
rtx barrier, real_b_end;
|
||||||
|
|
||||||
|
real_b_end = b->end;
|
||||||
barrier = NEXT_INSN (b->end);
|
barrier = NEXT_INSN (b->end);
|
||||||
|
|
||||||
/* Recognize a jump table following block B. */
|
/* Recognize a jump table following block B. */
|
||||||
@ -331,6 +332,8 @@ merge_blocks_move_successor_nojumps (a, b)
|
|||||||
&& (GET_CODE (PATTERN (NEXT_INSN (barrier))) == ADDR_VEC
|
&& (GET_CODE (PATTERN (NEXT_INSN (barrier))) == ADDR_VEC
|
||||||
|| GET_CODE (PATTERN (NEXT_INSN (barrier))) == ADDR_DIFF_VEC))
|
|| GET_CODE (PATTERN (NEXT_INSN (barrier))) == ADDR_DIFF_VEC))
|
||||||
{
|
{
|
||||||
|
/* Temporarily add the table jump insn to b, so that it will also
|
||||||
|
be moved to the correct location. */
|
||||||
b->end = NEXT_INSN (barrier);
|
b->end = NEXT_INSN (barrier);
|
||||||
barrier = NEXT_INSN (b->end);
|
barrier = NEXT_INSN (b->end);
|
||||||
}
|
}
|
||||||
@ -351,6 +354,9 @@ merge_blocks_move_successor_nojumps (a, b)
|
|||||||
/* Scramble the insn chain. */
|
/* Scramble the insn chain. */
|
||||||
reorder_insns_nobb (b->head, b->end, a->end);
|
reorder_insns_nobb (b->head, b->end, a->end);
|
||||||
|
|
||||||
|
/* Restore the real end of b. */
|
||||||
|
b->end = real_b_end;
|
||||||
|
|
||||||
/* Now blocks A and B are contiguous. Merge them. */
|
/* Now blocks A and B are contiguous. Merge them. */
|
||||||
merge_blocks_nomove (a, b);
|
merge_blocks_nomove (a, b);
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user