+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.
{
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)
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)];