Commit e572bad3 by Jeff Law

reorg.c (find_end_label): If a suitable RETURN insn exists at the end of the current function...

        * reorg.c (find_end_label): If a suitable RETURN insn exists at
        the end of the current function, place a label in front of it
        for the end_of_function_label.

From-SVN: r5162
parent 4724b3de
...@@ -738,8 +738,26 @@ find_end_label () ...@@ -738,8 +738,26 @@ find_end_label ()
|| GET_CODE (PATTERN (insn)) == CLOBBER))) || GET_CODE (PATTERN (insn)) == CLOBBER)))
insn = PREV_INSN (insn); insn = PREV_INSN (insn);
if (GET_CODE (insn) == CODE_LABEL) /* When a target threads its epilogue we might already have a
end_of_function_label = insn; suitable return insn. If so put a label before it for the
end_of_function_label. */
if (GET_CODE (insn) == BARRIER
&& GET_CODE (PREV_INSN (insn)) == JUMP_INSN
&& GET_CODE (PATTERN (PREV_INSN (insn))) == RETURN)
{
rtx temp = PREV_INSN (PREV_INSN (insn));
end_of_function_label = gen_label_rtx ();
LABEL_NUSES (end_of_function_label) = 0;
/* Put the label before an USE insns that may proceed the RETURN insn. */
while (GET_CODE (temp) == USE)
temp = PREV_INSN (temp);
emit_label_after (end_of_function_label, temp);
}
else if (GET_CODE (insn) == CODE_LABEL)
end_of_function_label = insn;
else else
{ {
/* Otherwise, make a new label and emit a RETURN and BARRIER, /* Otherwise, make a new label and emit a RETURN and BARRIER,
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment