aboutsummaryrefslogtreecommitdiff
path: root/gcc/flow.c
diff options
context:
space:
mode:
authorJason Merrill <jason@redhat.com>2001-08-22 10:51:32 -0400
committerJason Merrill <jason@gcc.gnu.org>2001-08-22 10:51:32 -0400
commit2270623af33a51bb6776a775bee05f142db83e7c (patch)
tree8b1e78e7c9911f3b44410182b978347eaa7f85b7 /gcc/flow.c
parentfd10dd09c8c9de14a7b30deddd4e5dd8481b92f4 (diff)
downloadgcc-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.c27
1 files changed, 11 insertions, 16 deletions
diff --git a/gcc/flow.c b/gcc/flow.c
index 39c7086..5e3a6ae 100644
--- a/gcc/flow.c
+++ b/gcc/flow.c
@@ -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);