(secondary_reload_class): Return CR_REGS for larger than word memory,
authorRichard Kenner <kenner@gcc.gnu.org>
Sun, 20 Dec 1992 01:18:53 +0000 (20:18 -0500)
committerRichard Kenner <kenner@gcc.gnu.org>
Sun, 20 Dec 1992 01:18:53 +0000 (20:18 -0500)
and BP_REGS for part-word mem with no DW.

From-SVN: r2899

gcc/config/a29k/a29k.c

index 68983a63eef7723d4d4d656ac2063d4f6845a605..bf43a13dede5a0247c7b8e1c124e48e546690c1d 100644 (file)
@@ -724,13 +724,17 @@ secondary_reload_class (class, mode, in)
        code = MEM;
     }
 
-  /* If we are transferring between memory and a multi-word mode or between
-     memory and a mode smaller than a word without DW being enabled, we need
-     BP.  */
+  /* If we are transferring between memory and a multi-word mode, we need
+     CR.  */
 
-  if (code == MEM
-      && (GET_MODE_SIZE (mode) > UNITS_PER_WORD
-         || (! TARGET_DW_ENABLE && GET_MODE_SIZE (mode) < UNITS_PER_WORD)))
+  if (code == MEM && GET_MODE_SIZE (mode) > UNITS_PER_WORD)
+    return CR_REGS;
+
+  /* If between memory and a mode smaller than a word without DW being
+     enabled, we need BP.  */
+
+  if (code == MEM && ! TARGET_DW_ENABLE
+      && GET_MODE_SIZE (mode) < UNITS_PER_WORD)
     return BP_REGS;
 
   /* Otherwise, we can place anything into GENERAL_REGS and can put