(reposition_prologue_and_epilogue_notes): Allow
for zero length prologue and epilogue list. From-SVN: r3465
This commit is contained in:
parent
f3acae4d7c
commit
9392c110eb
102
gcc/function.c
102
gcc/function.c
|
@ -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 */
|
||||||
|
|
Loading…
Reference in New Issue