From patchwork Mon Jul 2 07:20:37 2012 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Subject: RFA: MEP: Fix use of delete_insn. Date: Sun, 01 Jul 2012 21:20:37 -0000 From: Nick Clifton X-Patchwork-Id: 168505 Message-Id: <4FF14BC5.9010003@redhat.com> To: DJ Delorie Cc: gcc-patches@gcc.gnu.org Hi DJ, > We have this at the top of the loop, so I don't think it matters: > > next = NEXT_INSN (insn); > if (GET_CODE (insn) != INSN) > continue; Good point. > However, I think an insn will be skipped if we use NEXT. Perhaps we > want PREV? Or the loop might need to be altered to account for this > potential skipping. Hmm, I think that just using the NEXT_INSN at the head of the loop should work. As far as I can tell from looking at the code in mep_reorg_remove() we are never going to delete an insn that might involve removing more than one real insn, so we do not have to worry about side effects. Hence I would suggest the following alternative patch. OK to apply ? Cheers Nick Index: gcc/config/mep/mep.c =================================================================== --- gcc/config/mep/mep.c (revision 189108) +++ gcc/config/mep/mep.c (working copy) @@ -5096,7 +5096,7 @@ follow, where)) { count ++; - next = delete_insn (insn); + delete_insn (insn); if (dump_file) { fprintf (dump_file, "\n----- Success! new insn:\n\n");