diff options
author | John David Anglin <danglin@gcc.gnu.org> | 2014-01-08 01:58:35 +0000 |
---|---|---|
committer | John David Anglin <danglin@gcc.gnu.org> | 2014-01-08 01:58:35 +0000 |
commit | 55ada375eab20d171ad95f3e8363cc2a75d98ddd (patch) | |
tree | d7b6d64cbd698f9f5ffa4c1c08d0e10af012d4a5 /gcc | |
parent | 747639c28ff29046b26ffafc9a04fc42a72f683b (diff) | |
download | gcc-55ada375eab20d171ad95f3e8363cc2a75d98ddd.zip gcc-55ada375eab20d171ad95f3e8363cc2a75d98ddd.tar.gz gcc-55ada375eab20d171ad95f3e8363cc2a75d98ddd.tar.bz2 |
re PR target/59652 (ICE: in reload_cse_simplify_operands, at postreload.c:411)
PR target/59652
* config/pa/pa.c (pa_legitimate_address_p): Return false before reload
for 14-bit register offsets when INT14_OK_STRICT is false.
From-SVN: r206413
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/ChangeLog | 6 | ||||
-rw-r--r-- | gcc/config/pa/pa.c | 9 |
2 files changed, 10 insertions, 5 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index c985377..b04be2d 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,9 @@ +2014-01-07 John David Anglin <danglin@gcc.gnu.org> + + PR target/59652 + * config/pa/pa.c (pa_legitimate_address_p): Return false before reload + for 14-bit register offsets when INT14_OK_STRICT is false. + 2014-01-07 Roland Stigge <stigge@antcom.de> Michael Meissner <meissner@linux.vnet.ibm.com> diff --git a/gcc/config/pa/pa.c b/gcc/config/pa/pa.c index 2c4f6bf..c3755bf 100644 --- a/gcc/config/pa/pa.c +++ b/gcc/config/pa/pa.c @@ -10424,13 +10424,13 @@ pa_legitimate_address_p (enum machine_mode mode, rtx x, bool strict) /* When INT14_OK_STRICT is false, a secondary reload is needed to adjust the displacement of SImode and DImode floating point - instructions. So, we return false when STRICT is true. We + instructions but this may fail when the register also needs + reloading. So, we return false when STRICT is true. We also reject long displacements for float mode addresses since the majority of accesses will use floating point instructions that don't support 14-bit offsets. */ if (!INT14_OK_STRICT - && reload_in_progress - && strict + && (strict || !(reload_in_progress || reload_completed)) && mode != QImode && mode != HImode) return false; @@ -10490,8 +10490,7 @@ pa_legitimate_address_p (enum machine_mode mode, rtx x, bool strict) return true; if (!INT14_OK_STRICT - && reload_in_progress - && strict + && (strict || !(reload_in_progress || reload_completed)) && mode != QImode && mode != HImode) return false; |