* rs6000.h (LEGITIMIZE_RELOAD_ADDRESS): Recognize and accept
authorrth <rth@138bc75d-0d04-0410-961f-82ee72b054a4>
Thu, 21 Jan 1999 20:32:52 +0000 (20:32 +0000)
committerrth <rth@138bc75d-0d04-0410-961f-82ee72b054a4>
Thu, 21 Jan 1999 20:32:52 +0000 (20:32 +0000)
        transformations that we have performed earlier.
        * alpha.h (LEGITIMIZE_RELOAD_ADDRESS): Likewise.

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

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

index eb38b7e..d7af4d3 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 3c77a29..dc9f3d3 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 10e6687..0528074 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                    \