+2002-02-07 Richard Henderson <rth@redhat.com>
+
+ * alias.c (find_base_value): Recall base values for fixed hard regs.
+ * loop.c (loop_regs_update): Don't use single_set on non-insns.
+
2002-02-07 Alexandre Oliva <aoliva@redhat.com>
* config/mips/mips.md (define_delay) [mips16]: Adjust required
return new_reg_base_value[regno];
/* If a pseudo has a known base value, return it. Do not do this
- for hard regs since it can result in a circular dependency
- chain for registers which have values at function entry.
+ for non-fixed hard regs since it can result in a circular
+ dependency chain for registers which have values at function entry.
The test above is not sufficient because the scheduler may move
a copy out of an arg reg past the NOTE_INSN_FUNCTION_BEGIN. */
- if (regno >= FIRST_PSEUDO_REGISTER
+ if ((regno >= FIRST_PSEUDO_REGISTER || fixed_regs[regno])
&& regno < reg_base_value_size
&& reg_base_value[regno])
return reg_base_value[regno];
}
else
{
- rtx set = single_set (seq);
- if (set && GET_CODE (SET_DEST (set)) == REG)
- record_base_value (REGNO (SET_DEST (set)), SET_SRC (set), 0);
+ if (GET_CODE (seq) == SET
+ && GET_CODE (SET_DEST (seq)) == REG)
+ record_base_value (REGNO (SET_DEST (seq)), SET_SRC (seq), 0);
}
}