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 | |
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
-rw-r--r-- | gcc/ChangeLog | 6 | ||||
-rw-r--r-- | gcc/config/avr/avr.h | 6 |
2 files changed, 12 insertions, 0 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 196c1ae..777743a 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,9 @@ +2008-06-015 Andy Hutchinson <hutchinsonandy@aim.com> + + PR target/36336 + * config/avr/avr.h (LEGITIMIZE_RELOAD_ADDRESS): Add check for + reg_equiv_constant. + 2008-06-15 Maxim Kuvyrkov <maxim@codesourcery.com> * config/mips/loongson2ef.md: New file. 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) \ { \ |