diff options
author | rth <rth@138bc75d-0d04-0410-961f-82ee72b054a4> | 1999-01-21 20:32:52 +0000 |
---|---|---|
committer | rth <rth@138bc75d-0d04-0410-961f-82ee72b054a4> | 1999-01-21 20:32:52 +0000 |
commit | b2c8e19b90a09fabde6c2d0c1e9666abf3474277 (patch) | |
tree | b1d0e989f0f4ea9ad2d3cfe5646ed6119a5e961d /gcc/config/rs6000 | |
parent | 22e7912de59f295d347b1007787710538fe40728 (diff) | |
download | gcc-b2c8e19b90a09fabde6c2d0c1e9666abf3474277.tar.gz |
* rs6000.h (LEGITIMIZE_RELOAD_ADDRESS): Recognize and accept
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
Diffstat (limited to 'gcc/config/rs6000')
-rw-r--r-- | gcc/config/rs6000/rs6000.h | 12 |
1 files changed, 12 insertions, 0 deletions
diff --git a/gcc/config/rs6000/rs6000.h b/gcc/config/rs6000/rs6000.h index 10e6687c888..05280747def 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 \ |