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");

Reply via email to