]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
rs6000.h (LEGITIMIZE_RELOAD_ADDRESS): Recognize and accept transformations that we...
authorRichard Henderson <rth@cygnus.com>
Thu, 21 Jan 1999 20:34:06 +0000 (12:34 -0800)
committerRichard Henderson <rth@gcc.gnu.org>
Thu, 21 Jan 1999 20:34:06 +0000 (12:34 -0800)
        * rs6000.h (LEGITIMIZE_RELOAD_ADDRESS): Recognize and accept
        transformations that we have performed earlier.
        * alpha.h (LEGITIMIZE_RELOAD_ADDRESS): Likewise.

From-SVN: r24810

gcc/ChangeLog
gcc/config/alpha/alpha.h
gcc/config/rs6000/rs6000.h

index cbddd61387829762baeed0167c7eeb753f51735c..f2947b9a820508d85d9731be881dbe0fd773ac73 100644 (file)
@@ -1,3 +1,9 @@
+Thu Jan 21 20:33:31 1999  Richard Henderson  <rth@cygnus.com>
+
+       * rs6000.h (LEGITIMIZE_RELOAD_ADDRESS): Recognize and accept
+       transformations that we have performed earlier.
+       * alpha.h (LEGITIMIZE_RELOAD_ADDRESS): Likewise.
+
 Sun Jan 17 20:39:20 1999  Richard Henderson  <rth@cygnus.com>
 
        * jump.c (rtx_renumbered_equal_p): Special case CODE_LABEL.
index 4e99683fbbd6dcdb0c5708a760fd249050e1a07d..2f69908284fda9167f312056bddedd7e30d8570a 100644 (file)
@@ -1500,6 +1500,18 @@ extern void alpha_init_expanders ();
    
 #define LEGITIMIZE_RELOAD_ADDRESS(X,MODE,OPNUM,TYPE,IND_LEVELS,WIN)    \
 do {                                                                   \
+  /* We must recognize output that we have already generated ourselves.  */ \
+  if (GET_CODE (X) == PLUS                                             \
+      && GET_CODE (XEXP (X, 0)) == PLUS                                        \
+      && GET_CODE (XEXP (XEXP (X, 0), 0)) == REG                       \
+      && GET_CODE (XEXP (XEXP (X, 0), 1)) == CONST_INT                 \
+      && GET_CODE (XEXP (X, 1)) == CONST_INT)                          \
+    {                                                                  \
+      push_reload (XEXP (X, 0), NULL_RTX, &XEXP (X, 0), NULL_PTR,      \
+                  BASE_REG_CLASS, GET_MODE (X), VOIDmode, 0, 0,        \
+                  OPNUM, TYPE);                                        \
+      goto WIN;                                                                \
+    }                                                                  \
   if (GET_CODE (X) == PLUS                                             \
       && GET_CODE (XEXP (X, 0)) == REG                                 \
       && REGNO (XEXP (X, 0)) < FIRST_PSEUDO_REGISTER                   \
index a2252da143061d0f502e55a970d96ea9f880bbd9..f4d51347017ae9d86a3c1335384f90cc707c6a5e 100644 (file)
@@ -1960,6 +1960,18 @@ typedef struct rs6000_args
    
 #define LEGITIMIZE_RELOAD_ADDRESS(X,MODE,OPNUM,TYPE,IND_LEVELS,WIN)     \
 do {                                                                    \
+  /* We must recognize output that we have already generated ourselves.  */ \
+  if (GET_CODE (X) == PLUS                                             \
+      && GET_CODE (XEXP (X, 0)) == PLUS                                        \
+      && GET_CODE (XEXP (XEXP (X, 0), 0)) == REG                       \
+      && GET_CODE (XEXP (XEXP (X, 0), 1)) == CONST_INT                 \
+      && GET_CODE (XEXP (X, 1)) == CONST_INT)                          \
+    {                                                                  \
+      push_reload (XEXP (X, 0), NULL_RTX, &XEXP (X, 0), NULL_PTR,       \
+                   BASE_REG_CLASS, GET_MODE (X), VOIDmode, 0, 0,        \
+                   OPNUM, TYPE);                                        \
+      goto WIN;                                                         \
+    }                                                                  \
   if (GET_CODE (X) == PLUS                                              \
       && GET_CODE (XEXP (X, 0)) == REG                                  \
       && REGNO (XEXP (X, 0)) < FIRST_PSEUDO_REGISTER                    \