aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorOleg Endo <oleg.endo@t-online.de>2011-11-29 22:52:55 +0000
committerKaz Kojima <kkojima@gcc.gnu.org>2011-11-29 22:52:55 +0000
commitcebc182b78fd3be5396fb772f3b12a9096fc73ab (patch)
tree5639d088a2f5f63acca0dd6a1e63d257f94ac8c1 /gcc
parent08ee945e0b945fd2797c8bb7524d79dc73a9b6bd (diff)
downloadgcc-cebc182b78fd3be5396fb772f3b12a9096fc73ab.zip
gcc-cebc182b78fd3be5396fb772f3b12a9096fc73ab.tar.gz
gcc-cebc182b78fd3be5396fb772f3b12a9096fc73ab.tar.bz2
re PR target/51337 (SH Target: Various testsuite ICEs for -m2a -O0)
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
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ChangeLog6
-rw-r--r--gcc/config/sh/sh.c8
2 files changed, 14 insertions, 0 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 6ac5db9..587a627 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -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.
diff --git a/gcc/config/sh/sh.c b/gcc/config/sh/sh.c
index 2545a63..870c39f 100644
--- a/gcc/config/sh/sh.c
+++ b/gcc/config/sh/sh.c
@@ -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;
}