From: Jeffrey A Law Date: Mon, 2 Aug 1999 05:51:32 +0000 (+0000) Subject: cse.c (cse_insn): Fix loop which deletes insns after a jump that has become an uncond... X-Git-Tag: releases/gcc-2.95.1~60 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=06ec3ad86fe12781ba5ecb8f866c2f1d95d1de25;p=thirdparty%2Fgcc.git cse.c (cse_insn): Fix loop which deletes insns after a jump that has become an unconditional jump. * cse.c (cse_insn): Fix loop which deletes insns after a jump that has become an unconditional jump. From-SVN: r28387 --- diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 358828434e65..b437fb400739 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,5 +1,8 @@ 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. diff --git a/gcc/cse.c b/gcc/cse.c index 605d18507539..05875d8a861f 100644 --- a/gcc/cse.c +++ b/gcc/cse.c @@ -7483,9 +7483,12 @@ cse_insn (insn, libcall_insn) && 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); }