diff options
author | Richard Henderson <rth@cygnus.com> | 1999-01-21 12:32:52 -0800 |
---|---|---|
committer | Richard Henderson <rth@gcc.gnu.org> | 1999-01-21 12:32:52 -0800 |
commit | c8ab99010f56347af6f77424ffd1d6307dbc7496 (patch) | |
tree | b1d0e989f0f4ea9ad2d3cfe5646ed6119a5e961d /gcc | |
parent | 73d288ba2740078737801ad4a5c6b91cae41917c (diff) | |
download | gcc-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
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/ChangeLog | 9 | ||||
-rw-r--r-- | gcc/config/alpha/alpha.h | 12 | ||||
-rw-r--r-- | gcc/config/rs6000/rs6000.h | 12 |
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 \ |