sched-deps.c (sched_analyze_1): On STACK_REGS targets...
* sched-deps.c (sched_analyze_1): On STACK_REGS targets, x87, treat all writes to any stack register as a read/write dependency on FIRST_STACK_REG. (sched_analyze_2): Likewise, for reads from any stack register. From-SVN: r98762
This commit is contained in:
parent
21dad7e6b9
commit
c3bdeea8f3
@ -1,3 +1,10 @@
|
||||
2005-04-25 Roger Sayle <roger@eyesopen.com>
|
||||
|
||||
* sched-deps.c (sched_analyze_1): On STACK_REGS targets, x87, treat
|
||||
all writes to any stack register as a read/write dependency on
|
||||
FIRST_STACK_REG.
|
||||
(sched_analyze_2): Likewise, for reads from any stack register.
|
||||
|
||||
2005-04-25 Richard Henderson <rth@redhat.com>
|
||||
|
||||
* final.c (output_addr_const): Revert 2005-04-09 change.
|
||||
|
@ -534,6 +534,15 @@ sched_analyze_1 (struct deps *deps, rtx x, rtx insn)
|
||||
{
|
||||
regno = REGNO (dest);
|
||||
|
||||
#ifdef STACK_REGS
|
||||
/* Treat all writes to a stack register as modifying the TOS. */
|
||||
if (regno >= FIRST_STACK_REG && regno <= LAST_STACK_REG)
|
||||
{
|
||||
SET_REGNO_REG_SET (reg_pending_uses, FIRST_STACK_REG);
|
||||
regno = FIRST_STACK_REG;
|
||||
}
|
||||
#endif
|
||||
|
||||
/* A hard reg in a wide mode may really be multiple registers.
|
||||
If so, mark all of them just like the first. */
|
||||
if (regno < FIRST_PSEUDO_REGISTER)
|
||||
@ -684,6 +693,16 @@ sched_analyze_2 (struct deps *deps, rtx x, rtx insn)
|
||||
case REG:
|
||||
{
|
||||
int regno = REGNO (x);
|
||||
|
||||
#ifdef STACK_REGS
|
||||
/* Treat all reads of a stack register as modifying the TOS. */
|
||||
if (regno >= FIRST_STACK_REG && regno <= LAST_STACK_REG)
|
||||
{
|
||||
SET_REGNO_REG_SET (reg_pending_sets, FIRST_STACK_REG);
|
||||
regno = FIRST_STACK_REG;
|
||||
}
|
||||
#endif
|
||||
|
||||
if (regno < FIRST_PSEUDO_REGISTER)
|
||||
{
|
||||
int i = hard_regno_nregs[regno][GET_MODE (x)];
|
||||
|
Loading…
Reference in New Issue
Block a user