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

From-SVN: r49341
This commit is contained in:
Richard Henderson 2002-01-30 10:07:44 -08:00 committed by Richard Henderson
parent 20d32cc2b5
commit 5748ebeb99
2 changed files with 18 additions and 5 deletions

View File

@ -1,3 +1,7 @@
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.

View File

@ -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