| Submitter | Nick Clifton |
|---|---|
| Date | July 2, 2012, 7:20 a.m. |
| Message ID | <4FF14BC5.9010003@redhat.com> |
| Download | mbox | patch |
| Permalink | /patch/168505/ |
| State | New |
| Headers | show |
Comments
My concern is more about calling NEXT_INSN on a deleted insn. If
that's guaranteed to be "reliable", I'm OK with it.
Alternately, call NEXT_INSN at the top of the loop, but save the value
until the *next* iteration of the loop, so we can delete the insn and
not have to call NEXT_INSN on it after being deleted.
next_insn = get_insns ();
while (next_insn)
{
insn = next_insn;
next_insn = NEXT_INSN (insn);
. . .
}
Of course, *that* assumes that we never delete more than just the one
"insn" we're processing. In that case, though, we could still just
update next_insn so the next loop gets the right one.
So pick whichever solution is more future-proof and go for it :-)
Patch
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");