re PR target/51337 (SH Target: Various testsuite ICEs for -m2a -O0)
authorOleg Endo <oleg.endo@t-online.de>
Tue, 29 Nov 2011 22:52:55 +0000 (22:52 +0000)
committerKaz Kojima <kkojima@gcc.gnu.org>
Tue, 29 Nov 2011 22:52:55 +0000 (22:52 +0000)
PR target/51337
* config/sh/sh.c (sh_secondary_reload): Add case when FPUL
register is being loaded from a pseudo in memory.

From-SVN: r181823

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

index 6ac5db9..587a627 100644 (file)
@@ -1,3 +1,9 @@
+2011-11-29  Oleg Endo  <oleg.endo@t-online.de>
+
+       PR target/51337
+       * config/sh/sh.c (sh_secondary_reload): Add case when FPUL
+       register is being loaded from a pseudo in memory.
+
 2011-11-29  DJ Delorie  <dj@redhat.com>
 
        * config.gcc (rl78-*-elf): New case.
index 2545a63..870c39f 100644 (file)
@@ -12432,6 +12432,14 @@ sh_secondary_reload (bool in_p, rtx x, reg_class_t rclass_i,
   if (rclass != GENERAL_REGS && REG_P (x)
       && TARGET_REGISTER_P (REGNO (x)))
     return GENERAL_REGS;
+
+ /* If here fall back to loading FPUL register through general registers.
+    This case can happen when movsi_ie insn is picked initially to
+    load/store the FPUL register from/to another register, and then the
+    other register is allocated on the stack.  */
+  if (rclass == FPUL_REGS && true_regnum (x) == -1)
+    return GENERAL_REGS;
+
   return NO_REGS;
 }