rs6000.c (secondary_reload_class): Fix Darwin specific misuse of r0 as a reload address.

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.

From-SVN: r42287
This commit is contained in:
Dale Johannesen 2001-05-18 22:01:54 +00:00 committed by Stan Shebs
parent eb47ec1b69
commit 46fad5b721
2 changed files with 21 additions and 11 deletions

View File

@ -1,3 +1,8 @@
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

View File

@ -3587,17 +3587,22 @@ secondary_reload_class (class, mode, in)
{
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)
{