OSDN Git Service

* config/sh/sh-protos.h (sh_legitimize_reload_address): Declare.
authorkkojima <kkojima@138bc75d-0d04-0410-961f-82ee72b054a4>
Sun, 11 Apr 2010 22:59:36 +0000 (22:59 +0000)
committerMasaki Muranaka <monaka@monami-software.com>
Sun, 23 May 2010 05:31:32 +0000 (14:31 +0900)
* config/sh/sh.c: Include reload.h.
(sh_legitimize_reload_address): New.
* config/sh/sh.h (LEGITIMIZE_RELOAD_ADDRESS): Use
sh_legitimize_reload_address.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@158208 138bc75d-0d04-0410-961f-82ee72b054a4

gcc/ChangeLog
gcc/config/sh/sh.c

index fb4c805..2c63db3 100644 (file)
@@ -1,3 +1,11 @@
+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.
index 036c6e5..350a2b6 100644 (file)
@@ -9676,7 +9676,7 @@ sh_legitimize_reload_address (rtx *p, enum machine_mode mode, int opnum,
   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)
@@ -9710,7 +9710,8 @@ sh_legitimize_reload_address (rtx *p, enum machine_mode mode, int opnum,
       /* 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));
@@ -9724,7 +9725,7 @@ sh_legitimize_reload_address (rtx *p, enum machine_mode mode, int opnum,
           && (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))