+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>
* integrate.c (allocate_initial_values): Eliminate unused arg warning.
merge_blocks_move_successor_nojumps (a, b)
basic_block a, b;
{
- rtx barrier;
+ rtx barrier, real_b_end;
+ real_b_end = b->end;
barrier = NEXT_INSN (b->end);
/* Recognize a jump table following block B. */
&& (GET_CODE (PATTERN (NEXT_INSN (barrier))) == ADDR_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);
barrier = NEXT_INSN (b->end);
}
/* Scramble the insn chain. */
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. */
merge_blocks_nomove (a, b);