pa.c (secondary_reload_class): SAR<->FP copies require a secondary register.
authorJeffrey A Law <law@cygnus.com>
Mon, 16 Apr 2001 15:13:32 +0000 (15:13 +0000)
committerJeff Law <law@gcc.gnu.org>
Mon, 16 Apr 2001 15:13:32 +0000 (09:13 -0600)
        * pa.c (secondary_reload_class): SAR<->FP copies require a
        secondary register.

From-SVN: r41379

gcc/ChangeLog
gcc/config/pa/pa.c

index da7a5e7c4bcbd9b342879beff2427d6d11a0f2a4..4c4dc57da1c6e25243af12632eba21ce0db1c261 100644 (file)
@@ -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
index 050681b54baf01a03893519ff989348a8e455517..5b8505be4b9ee697dfdb8f82833c0b523c9a92d4 100644 (file)
@@ -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);