m32c.c (m32c_override_options): Disable -fivopts for -mcpu=m32c until ivopts supports sizeof(ptr) != sizeof(size_t).

* config/m32c/m32c.c (m32c_override_options): Disable -fivopts for
-mcpu=m32c until ivopts supports sizeof(ptr) != sizeof(size_t).
(m32c_legitimize_reload_address): Work around reload bug until
reload supports sizeof(ptr) != sizeof(size_t).

From-SVN: r147112
This commit is contained in:
DJ Delorie 2009-05-04 19:53:28 -04:00 committed by DJ Delorie
parent 3b82183370
commit a661e6cb68
2 changed files with 35 additions and 0 deletions

View File

@ -1,3 +1,10 @@
2009-05-04 DJ Delorie <dj@redhat.com>
* config/m32c/m32c.c (m32c_override_options): Disable -fivopts for
-mcpu=m32c until ivopts supports sizeof(ptr) != sizeof(size_t).
(m32c_legitimize_reload_address): Work around reload bug until
reload supports sizeof(ptr) != sizeof(size_t).
2009-05-03 Uros Bizjak <ubizjak@gmail.com>
Backport from mainline:

View File

@ -417,6 +417,9 @@ m32c_override_options (void)
}
else
target_memregs = 16;
if (TARGET_A24)
flag_ivopts = 0;
}
/* Defining data structures for per-function information */
@ -2043,6 +2046,31 @@ m32c_legitimize_reload_address (rtx * x,
return 1;
}
/* If we see an RTX like (subreg:PSI (reg:SI ...)) we need to reload
the subreg. We need to check for PLUS and non-PLUS cases. */
if (GET_CODE (*x) == SUBREG
&& GET_MODE (XEXP (*x, 0)) == SImode)
{
if (type == RELOAD_OTHER)
type = RELOAD_FOR_OTHER_ADDRESS;
push_reload (*x, NULL_RTX, x, NULL,
A_REGS, Pmode, VOIDmode, 0, 0, opnum,
type);
return 1;
}
if (GET_CODE (*x) == PLUS
&& GET_CODE (XEXP (*x, 0)) == SUBREG
&& GET_MODE (XEXP (XEXP (*x, 0), 0)) == SImode)
{
if (type == RELOAD_OTHER)
type = RELOAD_FOR_OTHER_ADDRESS;
push_reload (XEXP (*x, 0), NULL_RTX, &(XEXP (*x, 0)), NULL,
A_REGS, Pmode, VOIDmode, 0, 0, opnum,
type);
return 1;
}
return 0;
}