+2001-01-09 Alan Lehotsky <lehotsky@tiac.net>
+
+ * reload.c (find_reloads_address): Check for eliminable registers
+ when substituting a constant expression for a pseudo.
+
2001-01-09 Joseph S. Myers <jsm28@cam.ac.uk>
* c-common.c (enum format_type): Add format_type_error.
{
regno = REGNO (ad);
- if (reg_equiv_constant[regno] != 0
- && strict_memory_address_p (mode, reg_equiv_constant[regno]))
+ /* If the register is equivalent to an invariant expression, substitute
+ the invariant, and eliminate any eliminable register references. */
+ tem = reg_equiv_constant[regno];
+ if (tem != 0
+ && (tem = eliminate_regs (tem, mode, insn))
+ && strict_memory_address_p (mode, tem))
{
- *loc = ad = reg_equiv_constant[regno];
+ *loc = ad = tem;
return 0;
}