Commit 03a62672 by Richard Henderson Committed by Richard Henderson

emit-rtl.c (active_insn_p): Consider a clobber of the function return value to…

emit-rtl.c (active_insn_p): Consider a clobber of the function return value to be active even after reload.

        * emit-rtl.c (active_insn_p): Consider a clobber of the
        function return value to be active even after reload.

From-SVN: r57561
parent a7215b32
2002-09-26 Richard Henderson <rth@redhat.com>
* emit-rtl.c (active_insn_p): Consider a clobber of the
function return value to be active even after reload.
2002-09-27 Alan Modra <amodra@bigpond.net.au>
* doloop.c (doloop_modify_runtime <biv skips initial incr>): Adjust
......
......@@ -3022,11 +3022,34 @@ int
active_insn_p (insn)
rtx insn;
{
return (GET_CODE (insn) == CALL_INSN || GET_CODE (insn) == JUMP_INSN
|| (GET_CODE (insn) == INSN
&& (! reload_completed
|| (GET_CODE (PATTERN (insn)) != USE
&& GET_CODE (PATTERN (insn)) != CLOBBER))));
if (GET_CODE (insn) == CALL_INSN || GET_CODE (insn) == JUMP_INSN)
return true;
if (GET_CODE (insn) == INSN)
{
if (reload_completed)
{
rtx pat = PATTERN (insn);
/* After reload, remaining USE insns are noops. */
if (GET_CODE (pat) == USE)
return false;
if (GET_CODE (pat) == CLOBBER)
{
/* ??? Don't skip past the clobber of the return register.
If we eliminate it, we risk a variety of life analysis
problems on broken code. */
if (GET_CODE (XEXP (pat, 0)) == REG
&& REG_FUNCTION_VALUE_P (XEXP (pat, 0)))
return true;
/* Otherwise, clobbers don't do anything either. */
return false;
}
}
return true;
}
return false;
}
rtx
......
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