+2010-04-11 Kaz Kojima <kkojima@gcc.gnu.org>
+
+ * config/sh/sh-protos.h (sh_legitimize_reload_address): Declare.
+ * config/sh/sh.c: Include reload.h.
+ (sh_legitimize_reload_address): New.
+ * config/sh/sh.h (LEGITIMIZE_RELOAD_ADDRESS): Use
+ sh_legitimize_reload_address.
+
2010-04-11 Kaushik Phatak <kaushik.phatak@kpitcummins.com>
* config/sh/sh.md (*movqi_pop): New insn pattern.
if (GET_CODE (*p) == PLUS
&& (GET_MODE_SIZE (mode) == 4 || GET_MODE_SIZE (mode) == 8)
&& CONST_INT_P (XEXP (*p, 1))
- && MAYBE_BASE_REGISTER_RTX_P (XEXP (*p, 0), true)
+ && BASE_REGISTER_RTX_P (XEXP (*p, 0))
&& ! TARGET_SHMEDIA
&& ! (TARGET_SH4 && mode == DFmode)
&& ! (mode == PSImode && type == RELOAD_FOR_INPUT_ADDRESS)
/* Sometimes the normal form does not suit DImode. We could avoid
that by using smaller ranges, but that would give less optimized
code when SImode is prevalent. */
- if (GET_MODE_SIZE (mode) + offset - offset_base <= 64)
+ if (offset_base != 0
+ && GET_MODE_SIZE (mode) + offset - offset_base <= 64)
{
sum = gen_rtx_PLUS (Pmode, XEXP (*p, 0), GEN_INT (offset_base));
*p = gen_rtx_PLUS (Pmode, sum, GEN_INT (offset - offset_base));
&& (GET_MODE_SIZE (mode) == 4 || GET_MODE_SIZE (mode) == 8)
&& GET_CODE (XEXP (*p, 0)) == PLUS
&& CONST_INT_P (XEXP (XEXP (*p, 0), 1))
- && MAYBE_BASE_REGISTER_RTX_P (XEXP (XEXP (*p, 0), 0), true)
+ && BASE_REGISTER_RTX_P (XEXP (XEXP (*p, 0), 0))
&& CONST_INT_P (XEXP (*p, 1))
&& ! TARGET_SHMEDIA
&& ! (TARGET_SH2E && mode == SFmode))