Commit 7140f0f9 by Kaz Kojima

re PR target/43741 (sh-elf ICEs for libstdc++-v3/src/ios_init.cc with -m2a)

	PR target/43471
	* config/sh/sh.c (sh_legitimize_reload_address): Use
	MAYBE_BASE_REGISTER_RTX_P instead of BASE_REGISTER_RTX_P.
	Remove a unneeded check for offset_base.

From-SVN: r158393
parent e3e529d1
2010-04-15 Kaz Kojima <kkojima@gcc.gnu.org>
PR target/43471
* config/sh/sh.c (sh_legitimize_reload_address): Use
MAYBE_BASE_REGISTER_RTX_P instead of BASE_REGISTER_RTX_P.
Remove a unneeded check for offset_base.
2010-04-15 H.J. Lu <hongjiu.lu@intel.com> 2010-04-15 H.J. Lu <hongjiu.lu@intel.com>
* configure: Regenerated. * configure: Regenerated.
......
...@@ -9640,7 +9640,7 @@ sh_legitimize_reload_address (rtx *p, enum machine_mode mode, int opnum, ...@@ -9640,7 +9640,7 @@ sh_legitimize_reload_address (rtx *p, enum machine_mode mode, int opnum,
if (GET_CODE (*p) == PLUS if (GET_CODE (*p) == PLUS
&& (GET_MODE_SIZE (mode) == 4 || GET_MODE_SIZE (mode) == 8) && (GET_MODE_SIZE (mode) == 4 || GET_MODE_SIZE (mode) == 8)
&& CONST_INT_P (XEXP (*p, 1)) && CONST_INT_P (XEXP (*p, 1))
&& BASE_REGISTER_RTX_P (XEXP (*p, 0)) && MAYBE_BASE_REGISTER_RTX_P (XEXP (*p, 0), true)
&& ! TARGET_SHMEDIA && ! TARGET_SHMEDIA
&& ! (TARGET_SH4 && mode == DFmode) && ! (TARGET_SH4 && mode == DFmode)
&& ! (mode == PSImode && type == RELOAD_FOR_INPUT_ADDRESS) && ! (mode == PSImode && type == RELOAD_FOR_INPUT_ADDRESS)
...@@ -9674,8 +9674,7 @@ sh_legitimize_reload_address (rtx *p, enum machine_mode mode, int opnum, ...@@ -9674,8 +9674,7 @@ sh_legitimize_reload_address (rtx *p, enum machine_mode mode, int opnum,
/* Sometimes the normal form does not suit DImode. We could avoid /* Sometimes the normal form does not suit DImode. We could avoid
that by using smaller ranges, but that would give less optimized that by using smaller ranges, but that would give less optimized
code when SImode is prevalent. */ code when SImode is prevalent. */
if (offset_base != 0 if (GET_MODE_SIZE (mode) + offset - offset_base <= 64)
&& GET_MODE_SIZE (mode) + offset - offset_base <= 64)
{ {
sum = gen_rtx_PLUS (Pmode, XEXP (*p, 0), GEN_INT (offset_base)); sum = gen_rtx_PLUS (Pmode, XEXP (*p, 0), GEN_INT (offset_base));
*p = gen_rtx_PLUS (Pmode, sum, GEN_INT (offset - offset_base)); *p = gen_rtx_PLUS (Pmode, sum, GEN_INT (offset - offset_base));
...@@ -9689,7 +9688,7 @@ sh_legitimize_reload_address (rtx *p, enum machine_mode mode, int opnum, ...@@ -9689,7 +9688,7 @@ sh_legitimize_reload_address (rtx *p, enum machine_mode mode, int opnum,
&& (GET_MODE_SIZE (mode) == 4 || GET_MODE_SIZE (mode) == 8) && (GET_MODE_SIZE (mode) == 4 || GET_MODE_SIZE (mode) == 8)
&& GET_CODE (XEXP (*p, 0)) == PLUS && GET_CODE (XEXP (*p, 0)) == PLUS
&& CONST_INT_P (XEXP (XEXP (*p, 0), 1)) && CONST_INT_P (XEXP (XEXP (*p, 0), 1))
&& BASE_REGISTER_RTX_P (XEXP (XEXP (*p, 0), 0)) && MAYBE_BASE_REGISTER_RTX_P (XEXP (XEXP (*p, 0), 0), true)
&& CONST_INT_P (XEXP (*p, 1)) && CONST_INT_P (XEXP (*p, 1))
&& ! TARGET_SHMEDIA && ! TARGET_SHMEDIA
&& ! (TARGET_SH2E && mode == SFmode)) && ! (TARGET_SH2E && mode == SFmode))
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment