aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorIlya Leoshkevich <iii@linux.ibm.com>2019-09-03 09:29:02 +0000
committerIlya Leoshkevich <iii@gcc.gnu.org>2019-09-03 09:29:02 +0000
commit837ee1e0b6e7c0936110b93ed70d8303ab316a16 (patch)
treec2b1b3aa0a73720478e315ee21051b6766fbde67 /gcc
parente1d5d19ec4f84b67ac693fef5b2add7dc9cf056d (diff)
downloadgcc-837ee1e0b6e7c0936110b93ed70d8303ab316a16.zip
gcc-837ee1e0b6e7c0936110b93ed70d8303ab316a16.tar.gz
gcc-837ee1e0b6e7c0936110b93ed70d8303ab316a16.tar.bz2
S/390: Fix failing RTL check in s390_canonicalize_comparison
The new sigfpe-eh.c fails with internal compiler error: RTL check: expected elt 0 type 'e' or 'u', have 'w' (rtx const_int) This is most likely due to a typo: XEXP (*op1, 0) was used, when XEXP (*op0, 1) was intended. This did not cause any user-visible problems, because reversed_comparison_code_parts ignores the respective argument, and the release compiler is built without RTL checks. gcc/ChangeLog: 2019-09-03 Ilya Leoshkevich <iii@linux.ibm.com> * config/s390/s390.c (s390_canonicalize_comparison): Use XEXP (*op0, 1) instead of XEXP (*op1, 0). gcc/testsuite/ChangeLog: 2019-09-03 Ilya Leoshkevich <iii@linux.ibm.com> * gcc.target/s390/sigfpe-eh.c: New test. From-SVN: r275336
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ChangeLog5
-rw-r--r--gcc/config/s390/s390.c2
-rw-r--r--gcc/testsuite/ChangeLog4
3 files changed, 10 insertions, 1 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 401cfda..a6a481c 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,8 @@
+2019-09-03 Ilya Leoshkevich <iii@linux.ibm.com>
+
+ * config/s390/s390.c (s390_canonicalize_comparison): Use XEXP
+ (*op0, 1) instead of XEXP (*op1, 0).
+
2019-09-03 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
* config/aarch64/aarch64.md (UNSPEC_FJCVTZS): Define.
diff --git a/gcc/config/s390/s390.c b/gcc/config/s390/s390.c
index fa17d7d5d..2478426 100644
--- a/gcc/config/s390/s390.c
+++ b/gcc/config/s390/s390.c
@@ -1783,7 +1783,7 @@ s390_canonicalize_comparison (int *code, rtx *op0, rtx *op1,
if (*code == EQ)
new_code = reversed_comparison_code_parts (GET_CODE (*op0),
XEXP (*op0, 0),
- XEXP (*op1, 0), NULL);
+ XEXP (*op0, 1), NULL);
else
new_code = GET_CODE (*op0);
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index 40d11f9..2771cd9 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,3 +1,7 @@
+2019-09-03 Ilya Leoshkevich <iii@linux.ibm.com>
+
+ * gcc.target/s390/sigfpe-eh.c: New test.
+
2019-09-03 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
* gcc.target/aarch64/acle/jcvt_1.c: New test.