+2001-05-18 Dale Johannesen <dalej@apple.com>
+
+ * config/rs6000/rs6000.c (secondary_reload_class): Fix Darwin
+ specific misuse of r0 as a reload address.
+
Fri May 18 22:42:04 CEST 2001 Jan Hubicka <jh@suse.cz>
* combine.c (combine_simplify_rtx): Clear op0_mode if simplification
{
int regno;
-#if TARGET_ELF
- /* We can not copy a symbolic operand directly into anything other than
- BASE_REGS for TARGET_ELF. So indicate that a register from BASE_REGS
- is needed as an intermediate register. */
- if (class != BASE_REGS
- && (GET_CODE (in) == SYMBOL_REF
- || GET_CODE (in) == HIGH
- || GET_CODE (in) == LABEL_REF
- || GET_CODE (in) == CONST))
- return BASE_REGS;
-#endif
+ if (TARGET_ELF || (DEFAULT_ABI == ABI_DARWIN && flag_pic))
+ {
+ /* We cannot copy a symbolic operand directly into anything
+ other than BASE_REGS for TARGET_ELF. So indicate that a
+ register from BASE_REGS is needed as an intermediate
+ register.
+
+ On Darwin, pic addresses require a load from memory, which
+ needs a base register. */
+ if (class != BASE_REGS
+ && (GET_CODE (in) == SYMBOL_REF
+ || GET_CODE (in) == HIGH
+ || GET_CODE (in) == LABEL_REF
+ || GET_CODE (in) == CONST))
+ return BASE_REGS;
+ }
if (GET_CODE (in) == REG)
{