aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorJeffrey A Law <law@cygnus.com>2001-04-16 15:13:32 +0000
committerJeff Law <law@gcc.gnu.org>2001-04-16 09:13:32 -0600
commit26ee120d31cf2890ac579d666661cbd829eec893 (patch)
treeb1c9f9e6a57c4d57f3bca08fff321a0ff6613d43 /gcc
parent3bcd50fe2a2f55017b5cb03a34cc38986041cee6 (diff)
downloadgcc-26ee120d31cf2890ac579d666661cbd829eec893.zip
gcc-26ee120d31cf2890ac579d666661cbd829eec893.tar.gz
gcc-26ee120d31cf2890ac579d666661cbd829eec893.tar.bz2
pa.c (secondary_reload_class): SAR<->FP copies require a secondary register.
* pa.c (secondary_reload_class): SAR<->FP copies require a secondary register. From-SVN: r41379
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ChangeLog3
-rw-r--r--gcc/config/pa/pa.c7
2 files changed, 10 insertions, 0 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index da7a5e7..4c4dc57 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,5 +1,8 @@
Mon Apr 16 08:03:48 2001 Jeffrey A Law (law@cygnus.com)
+ * pa.c (secondary_reload_class): SAR<->FP copies require a
+ secondary register.
+
* install.texi (mips-mips-bsd): Update list of functions
required to include memmove.
* tm.texi (TARGET_MEM_FUNCTIONS): Update list of implicitly
diff --git a/gcc/config/pa/pa.c b/gcc/config/pa/pa.c
index 050681b..5b8505b 100644
--- a/gcc/config/pa/pa.c
+++ b/gcc/config/pa/pa.c
@@ -4694,6 +4694,13 @@ secondary_reload_class (class, mode, in)
|| (class == SHIFT_REGS && (regno <= 0 || regno >= 32)))
return GENERAL_REGS;
+ /* A SAR<->FP register copy requires a secondary register (GPR) as
+ well as secondary memory. */
+ if (regno >= 0 && regno < FIRST_PSEUDO_REGISTER
+ && ((REGNO_REG_CLASS (regno) == SHIFT_REGS && FP_REG_CLASS_P (class))
+ || (class == SHIFT_REGS && FP_REG_CLASS_P (REGNO_REG_CLASS (regno)))))
+ return GENERAL_REGS;
+
if (GET_CODE (in) == HIGH)
in = XEXP (in, 0);