diff options
author | Jason Merrill <jason@redhat.com> | 2001-08-22 10:51:32 -0400 |
---|---|---|
committer | Jason Merrill <jason@gcc.gnu.org> | 2001-08-22 10:51:32 -0400 |
commit | 2270623af33a51bb6776a775bee05f142db83e7c (patch) | |
tree | 8b1e78e7c9911f3b44410182b978347eaa7f85b7 /gcc/flow.c | |
parent | fd10dd09c8c9de14a7b30deddd4e5dd8481b92f4 (diff) | |
download | gcc-2270623af33a51bb6776a775bee05f142db83e7c.zip gcc-2270623af33a51bb6776a775bee05f142db83e7c.tar.gz gcc-2270623af33a51bb6776a775bee05f142db83e7c.tar.bz2 |
jump.c (squeeze_notes): Take parms by reference.
* jump.c (squeeze_notes): Take parms by reference. Handle END being
a squeezable note.
* rtl.h: Adjust.
* ifcvt.c (dead_or_predicable): Adjust.
* loop.c (find_and_verify_loops): Adjust.
* stmt.c (expand_end_case): Adjust.
* flow.c (merge_blocks_move_successor_nojumps): Adjust. Modify the
head and end insn pointers in the basic block, not just local copies.
(merge_blocks_move_predecessor_nojumps): Likewise.
From-SVN: r45107
Diffstat (limited to 'gcc/flow.c')
-rw-r--r-- | gcc/flow.c | 27 |
1 files changed, 11 insertions, 16 deletions
@@ -3074,13 +3074,10 @@ static int merge_blocks_move_predecessor_nojumps (a, b) basic_block a, b; { - rtx start, end, barrier; + rtx barrier; int index; - start = a->head; - end = a->end; - - barrier = next_nonnote_insn (end); + barrier = next_nonnote_insn (a->end); if (GET_CODE (barrier) != BARRIER) abort (); flow_delete_insn (barrier); @@ -3092,11 +3089,11 @@ merge_blocks_move_predecessor_nojumps (a, b) and adjust the block trees appropriately. Even better would be to have a tighter connection between block trees and rtl so that this is not necessary. */ - start = squeeze_notes (start, end); + squeeze_notes (&a->head, &a->end); /* Scramble the insn chain. */ - if (end != PREV_INSN (b->head)) - reorder_insns (start, end, PREV_INSN (b->head)); + if (a->end != PREV_INSN (b->head)) + reorder_insns (a->head, a->end, PREV_INSN (b->head)); if (rtl_dump_file) { @@ -3127,11 +3124,9 @@ static int merge_blocks_move_successor_nojumps (a, b) basic_block a, b; { - rtx start, end, barrier; + rtx barrier; - start = b->head; - end = b->end; - barrier = NEXT_INSN (end); + barrier = NEXT_INSN (b->end); /* Recognize a jump table following block B. */ if (barrier @@ -3141,8 +3136,8 @@ merge_blocks_move_successor_nojumps (a, b) && (GET_CODE (PATTERN (NEXT_INSN (barrier))) == ADDR_VEC || GET_CODE (PATTERN (NEXT_INSN (barrier))) == ADDR_DIFF_VEC)) { - end = NEXT_INSN (barrier); - barrier = NEXT_INSN (end); + b->end = NEXT_INSN (barrier); + barrier = NEXT_INSN (b->end); } /* There had better have been a barrier there. Delete it. */ @@ -3156,10 +3151,10 @@ merge_blocks_move_successor_nojumps (a, b) and adjust the block trees appropriately. Even better would be to have a tighter connection between block trees and rtl so that this is not necessary. */ - start = squeeze_notes (start, end); + squeeze_notes (&b->head, &b->end); /* Scramble the insn chain. */ - reorder_insns (start, end, a->end); + reorder_insns (b->head, b->end, a->end); /* Now blocks A and B are contiguous. Merge them. */ merge_blocks_nomove (a, b); |