OSDN Git Service

* alpha.c (secondary_reload_class): Don't allocate a secondary
authorrth <rth@138bc75d-0d04-0410-961f-82ee72b054a4>
Tue, 25 Jan 2000 10:38:41 +0000 (10:38 +0000)
committerrth <rth@138bc75d-0d04-0410-961f-82ee72b054a4>
Tue, 25 Jan 2000 10:38:41 +0000 (10:38 +0000)
        for integral mode memories into FLOAT_REGS.  Rearrange the more
        complicated memory expression inward.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@31606 138bc75d-0d04-0410-961f-82ee72b054a4

gcc/ChangeLog
gcc/config/alpha/alpha.c

index b14ef14..f89a936 100644 (file)
@@ -1,3 +1,9 @@
+2000-01-25  Richard Henderson  <rth@cygnus.com>
+
+       * alpha.c (secondary_reload_class): Don't allocate a secondary
+       for integral mode memories into FLOAT_REGS.  Rearrange the more
+       complicated memory expression inward.
+
 2000-01-25  Zack Weinberg  <zack@wolery.cumb.org>
 
        * inclhack.def: Fixes to play nicer with FreeBSD, and
index cbc1688..fa59cc1 100644 (file)
@@ -1095,16 +1095,14 @@ secondary_reload_class (class, mode, x, in)
      rtx x;
      int in;
 {
-  if (GET_CODE (x) == MEM
-      || (GET_CODE (x) == REG && REGNO (x) >= FIRST_PSEUDO_REGISTER)
-      || (GET_CODE (x) == SUBREG
-         && (GET_CODE (SUBREG_REG (x)) == MEM
-             || (GET_CODE (SUBREG_REG (x)) == REG
-                 && REGNO (SUBREG_REG (x)) >= FIRST_PSEUDO_REGISTER))))
-    {
-      if (class == FLOAT_REGS && mode != DImode)
-       return GENERAL_REGS;
-      if ((mode == QImode || mode == HImode) && ! TARGET_BWX)
+  if ((mode == QImode || mode == HImode) && ! TARGET_BWX)
+    {
+      if (GET_CODE (x) == MEM
+         || (GET_CODE (x) == REG && REGNO (x) >= FIRST_PSEUDO_REGISTER)
+         || (GET_CODE (x) == SUBREG
+             && (GET_CODE (SUBREG_REG (x)) == MEM
+                 || (GET_CODE (SUBREG_REG (x)) == REG
+                     && REGNO (SUBREG_REG (x)) >= FIRST_PSEUDO_REGISTER))))
        {
          if (!in || !aligned_memory_operand(x, mode))
            return GENERAL_REGS;