diff options
author | Andy Hutchinson <hutchinsonandy@aim.com> | 2008-06-15 18:24:27 +0000 |
---|---|---|
committer | Andy Hutchinson <hutchinsonandy@gcc.gnu.org> | 2008-06-15 18:24:27 +0000 |
commit | f4df5771d99a334b5029890619621b643a420db9 (patch) | |
tree | 4642715925145ea6e03f7758a9866644a50e3941 /gcc/config | |
parent | 147fc44bcd5fdc30c1518a433b42a896a6d42a54 (diff) | |
download | gcc-f4df5771d99a334b5029890619621b643a420db9.zip gcc-f4df5771d99a334b5029890619621b643a420db9.tar.gz gcc-f4df5771d99a334b5029890619621b643a420db9.tar.bz2 |
re PR target/36336 (ICE push_reload - psuedo reg_equiv_constant)
PR target/36336
* config/avr/avr.h (LEGITIMIZE_RELOAD_ADDRESS): Add check for reg_equiv_constant.
From-SVN: r136818
Diffstat (limited to 'gcc/config')
-rw-r--r-- | gcc/config/avr/avr.h | 6 |
1 files changed, 6 insertions, 0 deletions
diff --git a/gcc/config/avr/avr.h b/gcc/config/avr/avr.h index 90e62a3..d915aff 100644 --- a/gcc/config/avr/avr.h +++ b/gcc/config/avr/avr.h @@ -437,6 +437,11 @@ extern int avr_reg_order[]; } #define XEXP_(X,Y) (X) + +/* LEGITIMIZE_RELOAD_ADDRESS will allow register R26/27 to be used, where it + is no worse than normal base pointers R28/29 and R30/31. For example: + If base offset is greater than 63 bytes or for R++ or --R addressing. */ + #define LEGITIMIZE_RELOAD_ADDRESS(X, MODE, OPNUM, TYPE, IND_LEVELS, WIN) \ do { \ if (1&&(GET_CODE (X) == POST_INC || GET_CODE (X) == PRE_DEC)) \ @@ -448,6 +453,7 @@ do { \ } \ if (GET_CODE (X) == PLUS \ && REG_P (XEXP (X, 0)) \ + && reg_equiv_constant[REGNO (XEXP (X, 0))] == 0 \ && GET_CODE (XEXP (X, 1)) == CONST_INT \ && INTVAL (XEXP (X, 1)) >= 1) \ { \ |