rs6000.h (LEGITIMIZE_RELOAD_ADDRESS): Recognize and accept transformations that we...
authorRichard Henderson <rth@cygnus.com>
Thu, 21 Jan 1999 20:32:52 +0000 (12:32 -0800)
committerRichard Henderson <rth@gcc.gnu.org>
Thu, 21 Jan 1999 20:32:52 +0000 (12:32 -0800)
        * rs6000.h (LEGITIMIZE_RELOAD_ADDRESS): Recognize and accept
        transformations that we have performed earlier.
        * alpha.h (LEGITIMIZE_RELOAD_ADDRESS): Likewise.

From-SVN: r24809

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

index eb38b7e16d1d5fa269652277a6ca6c5256ed043b..d7af4d392c7ade64f0f1e45453b711693b6864b0 100644 (file)
@@ -1,3 +1,12 @@
+Thu Jan 21 20:24:02 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.
+
+       * alpha.md (prologue_stack_probe_loop): Don't do our own label
+       handling, call gen_label_rtx instead.
+
 Thu Jan 21 17:45:18 1999  Richard Henderson  <rth@cygnus.com>
 
        * configure.in ({rs6000|powerpc}-ibm-aix4.[12]*): Add missing `then'.
index 3c77a29710420882e306f8fae25e5832930bdd31..dc9f3d3227179beac31cba55a7422f1e789eff41 100644 (file)
@@ -1517,6 +1517,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 10e6687c8888f1582459d931723f3dae53f2aa68..05280747def6994e811c104f990763ac58df2f3d 100644 (file)
@@ -2030,6 +2030,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                    \