* cse.c (cse_insn): Fix loop which deletes insns after a jump
that has become an unconditional jump.
From-SVN: r28388
Sun Aug 1 22:46:42 1999 Jeffrey A Law (law@cygnus.com)
+ * cse.c (cse_insn): Fix loop which deletes insns after a jump
+ that has become an unconditional jump.
+
* m68k.c (output_function_prologue): Fix typo in CPU32 case.
(output_function_epilogue): Similarly.
&& GET_CODE (NEXT_INSN (p)) != BARRIER
&& GET_CODE (NEXT_INSN (p)) != CODE_LABEL)
{
+ /* Note, we must update P with the return value from
+ delete_insn, otherwise we could get an infinite loop
+ if NEXT_INSN (p) had INSN_DELETED_P set. */
if (GET_CODE (NEXT_INSN (p)) != NOTE
|| NOTE_LINE_NUMBER (NEXT_INSN (p)) == NOTE_INSN_DELETED)
- delete_insn (NEXT_INSN (p));
+ p = delete_insn (NEXT_INSN (p));
else
p = NEXT_INSN (p);
}