loop.c (move_movables): While removing insn sequences...
* loop.c (move_movables): While removing insn sequences, preserve the next pointer of the most recently deleted insn when we skip over a NOTE. From-SVN: r22402
This commit is contained in:
parent
50a029fdcc
commit
9655bf953a
@ -1,3 +1,9 @@
|
||||
Sun Sep 13 04:37:28 1998 David S. Miller <davem@pierdol.cobaltmicro.com>
|
||||
|
||||
* loop.c (move_movables): While removing insn sequences, preserve
|
||||
the next pointer of the most recently deleted insn when we skip
|
||||
over a NOTE.
|
||||
|
||||
Sat Sep 12 11:37:19 1998 Michael Meissner <meissner@cygnus.com>
|
||||
|
||||
* rs6000.h ({ASM,CPP}_CPU_SPEC): Add support for all machines
|
||||
|
23
gcc/loop.c
23
gcc/loop.c
@ -1916,9 +1916,17 @@ move_movables (movables, threshold, insn_count, loop_start, end, nregs)
|
||||
temp = delete_insn (temp);
|
||||
}
|
||||
|
||||
temp = p;
|
||||
p = delete_insn (p);
|
||||
|
||||
/* simplify_giv_expr expects that it can walk the insns
|
||||
at m->insn forwards and see this old sequence we are
|
||||
tossing here. delete_insn does preserve the next
|
||||
pointers, but when we skip over a NOTE we must fix
|
||||
it up. Otherwise that code walks into the non-deleted
|
||||
insn stream. */
|
||||
while (p && GET_CODE (p) == NOTE)
|
||||
p = NEXT_INSN (p);
|
||||
p = NEXT_INSN (temp) = NEXT_INSN (p);
|
||||
}
|
||||
|
||||
start_sequence ();
|
||||
@ -2125,9 +2133,18 @@ move_movables (movables, threshold, insn_count, loop_start, end, nregs)
|
||||
XEXP (temp, 0) = i1;
|
||||
}
|
||||
|
||||
temp = p;
|
||||
delete_insn (p);
|
||||
do p = NEXT_INSN (p);
|
||||
while (p && GET_CODE (p) == NOTE);
|
||||
p = NEXT_INSN (p);
|
||||
|
||||
/* simplify_giv_expr expects that it can walk the insns
|
||||
at m->insn forwards and see this old sequence we are
|
||||
tossing here. delete_insn does preserve the next
|
||||
pointers, but when we skip over a NOTE we must fix
|
||||
it up. Otherwise that code walks into the non-deleted
|
||||
insn stream. */
|
||||
while (p && GET_CODE (p) == NOTE)
|
||||
p = NEXT_INSN (temp) = NEXT_INSN (p);
|
||||
}
|
||||
|
||||
/* The more regs we move, the less we like moving them. */
|
||||
|
Loading…
Reference in New Issue
Block a user