diff options
author | Denis Chertykov <denisc@overta.ru> | 2004-08-31 20:25:32 +0000 |
---|---|---|
committer | Denis Chertykov <denisc@gcc.gnu.org> | 2004-09-01 00:25:32 +0400 |
commit | 678584fc80fc69fbd3c4f5f15d484ed6006f41be (patch) | |
tree | c272fd851277c3b6414354daa4ce337aa8a8dcd1 /gcc | |
parent | 43b430575923b65a922d3a4b1ec414296eaf9075 (diff) | |
download | gcc-678584fc80fc69fbd3c4f5f15d484ed6006f41be.zip gcc-678584fc80fc69fbd3c4f5f15d484ed6006f41be.tar.gz gcc-678584fc80fc69fbd3c4f5f15d484ed6006f41be.tar.bz2 |
re PR target/15417 (ICE while building an avr-cross compiler)
PR target/15417
* config/avr/avr.c (avr_hard_regno_mode_ok): Enable usage of
frame pointer register only in Pmode while reload in progress.
From-SVN: r86842
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/ChangeLog | 6 | ||||
-rw-r--r-- | gcc/config/avr/avr.c | 6 |
2 files changed, 12 insertions, 0 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index bc2d7bd..26916e8 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,9 @@ +2004-08-31 Denis Chertykov <denisc@overta.ru> + + PR target/15417 + * config/avr/avr.c (avr_hard_regno_mode_ok): Enable usage of + frame pointer register only in Pmode while reload in progress. + 2004-08-31 Stephane Carrez <stcarrez@nerim.fr> PR target/15334 diff --git a/gcc/config/avr/avr.c b/gcc/config/avr/avr.c index 26d6fdb..5099805 100644 --- a/gcc/config/avr/avr.c +++ b/gcc/config/avr/avr.c @@ -5125,6 +5125,12 @@ avr_hard_regno_mode_ok (int regno, enum machine_mode mode) if (regno == REG_Y + 1) return 0; + /* Reload can use r28:r29 for reload register and for frame pointer + in one insn. It's wrong. We must disable it. */ + if (mode != Pmode && reload_in_progress && frame_pointer_required_p () + && regno <= REG_Y && (regno + GET_MODE_SIZE (mode)) >= (REG_Y + 1)) + return 0; + if (mode == QImode) return 1; /* if (regno < 24 && !AVR_ENHANCED) |