aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorEric Botcazou <ebotcazou@adacore.com>2016-08-28 08:50:09 +0000
committerEric Botcazou <ebotcazou@gcc.gnu.org>2016-08-28 08:50:09 +0000
commit710a2e102899b92d4368ec357d9be32e78387de7 (patch)
tree8d02ed32bed9c3c0d18c94dcc1933bb5e45a829e /gcc
parentf329b264b3d8f91909caca1df4f9ee043d3ca14a (diff)
downloadgcc-710a2e102899b92d4368ec357d9be32e78387de7.zip
gcc-710a2e102899b92d4368ec357d9be32e78387de7.tar.gz
gcc-710a2e102899b92d4368ec357d9be32e78387de7.tar.bz2
re PR target/77324 (ICE in push_reload, at reload.c:1350)
PR target/77324 * config/sparc/sparc.c (sparc_legitimate_address_p): Accept special HIGH+LO construct during reload. From-SVN: r239807
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ChangeLog6
-rw-r--r--gcc/config/sparc/sparc.c7
2 files changed, 13 insertions, 0 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 9ddb5bd..95fcf6a 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,9 @@
+2016-08-28 Eric Botcazou <ebotcazou@adacore.com>
+
+ PR target/77324
+ * config/sparc/sparc.c (sparc_legitimate_address_p): Accept special
+ HIGH+LO construct during reload.
+
2016-08-28 Tom de Vries <tom@codesourcery.com>
PR lto/70955
diff --git a/gcc/config/sparc/sparc.c b/gcc/config/sparc/sparc.c
index f5cc113..254b722 100644
--- a/gcc/config/sparc/sparc.c
+++ b/gcc/config/sparc/sparc.c
@@ -4039,6 +4039,13 @@ sparc_legitimate_address_p (machine_mode mode, rtx addr, bool strict)
than the alignment (8) may cause the LO_SUM to overflow. */
if (mode == TFmode && TARGET_ARCH32)
return 0;
+
+ /* During reload, accept the HIGH+LO_SUM construct generated by
+ sparc_legitimize_reload_address. */
+ if (reload_in_progress
+ && GET_CODE (rs1) == HIGH
+ && XEXP (rs1, 0) == imm1)
+ return 1;
}
else if (GET_CODE (addr) == CONST_INT && SMALL_INT (addr))
return 1;