aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRichard Henderson <rth@cygnus.com>1999-01-21 12:32:52 -0800
committerRichard Henderson <rth@gcc.gnu.org>1999-01-21 12:32:52 -0800
commitc8ab99010f56347af6f77424ffd1d6307dbc7496 (patch)
treeb1d0e989f0f4ea9ad2d3cfe5646ed6119a5e961d
parent73d288ba2740078737801ad4a5c6b91cae41917c (diff)
downloadgcc-c8ab99010f56347af6f77424ffd1d6307dbc7496.zip
gcc-c8ab99010f56347af6f77424ffd1d6307dbc7496.tar.gz
gcc-c8ab99010f56347af6f77424ffd1d6307dbc7496.tar.bz2
rs6000.h (LEGITIMIZE_RELOAD_ADDRESS): Recognize and accept transformations that we have performed earlier.
* rs6000.h (LEGITIMIZE_RELOAD_ADDRESS): Recognize and accept transformations that we have performed earlier. * alpha.h (LEGITIMIZE_RELOAD_ADDRESS): Likewise. From-SVN: r24809
-rw-r--r--gcc/ChangeLog9
-rw-r--r--gcc/config/alpha/alpha.h12
-rw-r--r--gcc/config/rs6000/rs6000.h12
3 files changed, 33 insertions, 0 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index eb38b7e..d7af4d3 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -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'.
diff --git a/gcc/config/alpha/alpha.h b/gcc/config/alpha/alpha.h
index 3c77a29..dc9f3d3 100644
--- a/gcc/config/alpha/alpha.h
+++ b/gcc/config/alpha/alpha.h
@@ -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 \
diff --git a/gcc/config/rs6000/rs6000.h b/gcc/config/rs6000/rs6000.h
index 10e6687..0528074 100644
--- a/gcc/config/rs6000/rs6000.h
+++ b/gcc/config/rs6000/rs6000.h
@@ -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 \