Commit 5748ebeb by Richard Henderson Committed by Richard Henderson

* sched-deps.c (sched_analyze): Make a call read the frame pointer.

From-SVN: r49341
parent 20d32cc2
2002-01-30 Richard Henderson <rth@redhat.com>
* sched-deps.c (sched_analyze): Make a call read the frame pointer.
2002-01-30 Zack Weinberg <zack@codesourcery.com>
* expmed.c (emit_store_flag): Call protect_from_queue on op0 and op1.
......
......@@ -1267,21 +1267,30 @@ sched_analyze (deps, head, tail)
}
else
{
/* A call may read and modify global register variables.
Other call-clobbered hard regs may be clobbered. We
don't know what set of fixed registers might be used
by the function. It is certain that the stack pointer
is among them, but be conservative. */
for (i = 0; i < FIRST_PSEUDO_REGISTER; i++)
/* A call may read and modify global register variables. */
if (global_regs[i])
{
SET_REGNO_REG_SET (reg_pending_sets, i);
SET_REGNO_REG_SET (reg_pending_uses, i);
}
/* Other call-clobbered hard regs may be clobbered. */
else if (TEST_HARD_REG_BIT (regs_invalidated_by_call, i))
SET_REGNO_REG_SET (reg_pending_clobbers, i);
/* We don't know what set of fixed registers might be used
by the function, but it is certain that the stack pointer
is among them, but be conservative. */
else if (fixed_regs[i])
SET_REGNO_REG_SET (reg_pending_uses, i);
/* The frame pointer is normally not used by the function
itself, but by the debugger. */
/* ??? MIPS o32 is an exception. It uses the frame pointer
in the macro expansion of jal but does not represent this
fact in the call_insn rtl. */
else if (i == FRAME_POINTER_REGNUM
|| (i == HARD_FRAME_POINTER_REGNUM
&& (! reload_completed || frame_pointer_needed)))
SET_REGNO_REG_SET (reg_pending_uses, i);
}
/* For each insn which shouldn't cross a call, add a dependence
......
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