(reposition_prologue_and_epilogue_notes): Allow

for zero length prologue and epilogue list.

From-SVN: r3465
This commit is contained in:
John Hassey 1993-02-12 15:52:54 +00:00
parent f3acae4d7c
commit 9392c110eb
1 changed files with 54 additions and 48 deletions

View File

@ -4750,30 +4750,33 @@ reposition_prologue_and_epilogue_notes (f)
reorg has run. */ reorg has run. */
for (len = 0; prologue[len]; len++) for (len = 0; prologue[len]; len++)
; ;
for (insn = f; insn; insn = NEXT_INSN (insn)) for (insn = f; len && insn; insn = NEXT_INSN (insn))
if (GET_CODE (insn) == NOTE) {
{ if (GET_CODE (insn) == NOTE)
if (NOTE_LINE_NUMBER (insn) == NOTE_INSN_PROLOGUE_END) {
note = insn; if (NOTE_LINE_NUMBER (insn) == NOTE_INSN_PROLOGUE_END)
} note = insn;
else if ((len -= contains (insn, prologue)) == 0) }
{ else if ((len -= contains (insn, prologue)) == 0)
/* Find the prologue-end note if we haven't already, and {
move it to just after the last prologue insn. */ /* Find the prologue-end note if we haven't already, and
if (note == 0) move it to just after the last prologue insn. */
for (note = insn; note = NEXT_INSN (note);) if (note == 0)
if (GET_CODE (note) == NOTE {
&& NOTE_LINE_NUMBER (note) == NOTE_INSN_PROLOGUE_END) for (note = insn; note = NEXT_INSN (note);)
break; if (GET_CODE (note) == NOTE
next = NEXT_INSN (note); && NOTE_LINE_NUMBER (note) == NOTE_INSN_PROLOGUE_END)
prev = PREV_INSN (note); break;
if (prev) }
NEXT_INSN (prev) = next; next = NEXT_INSN (note);
if (next) prev = PREV_INSN (note);
PREV_INSN (next) = prev; if (prev)
add_insn_after (note, insn); NEXT_INSN (prev) = next;
break; if (next)
} PREV_INSN (next) = prev;
add_insn_after (note, insn);
}
}
} }
if (epilogue) if (epilogue)
@ -4785,30 +4788,33 @@ reposition_prologue_and_epilogue_notes (f)
reorg has run. */ reorg has run. */
for (len = 0; epilogue[len]; len++) for (len = 0; epilogue[len]; len++)
; ;
for (insn = get_last_insn (); insn; insn = PREV_INSN (insn)) for (insn = get_last_insn (); len && insn; insn = PREV_INSN (insn))
if (GET_CODE (insn) == NOTE) {
{ if (GET_CODE (insn) == NOTE)
if (NOTE_LINE_NUMBER (insn) == NOTE_INSN_EPILOGUE_BEG) {
note = insn; if (NOTE_LINE_NUMBER (insn) == NOTE_INSN_EPILOGUE_BEG)
} note = insn;
else if ((len -= contains (insn, epilogue)) == 0) }
{ else if ((len -= contains (insn, epilogue)) == 0)
/* Find the epilogue-begin note if we haven't already, and {
move it to just before the first epilogue insn. */ /* Find the epilogue-begin note if we haven't already, and
if (note == 0) move it to just before the first epilogue insn. */
for (note = insn; note = PREV_INSN (note);) if (note == 0)
if (GET_CODE (note) == NOTE {
&& NOTE_LINE_NUMBER (note) == NOTE_INSN_EPILOGUE_BEG) for (note = insn; note = PREV_INSN (note);)
break; if (GET_CODE (note) == NOTE
next = NEXT_INSN (note); && NOTE_LINE_NUMBER (note) == NOTE_INSN_EPILOGUE_BEG)
prev = PREV_INSN (note); break;
if (prev) }
NEXT_INSN (prev) = next; next = NEXT_INSN (note);
if (next) prev = PREV_INSN (note);
PREV_INSN (next) = prev; if (prev)
add_insn_after (note, PREV_INSN (insn)); NEXT_INSN (prev) = next;
break; if (next)
} PREV_INSN (next) = prev;
add_insn_after (note, PREV_INSN (insn));
}
}
} }
} }
#endif /* HAVE_prologue or HAVE_epilogue */ #endif /* HAVE_prologue or HAVE_epilogue */