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-11-06 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-11-06 Ilya Leoshkevich <iii@linux.ibm.com>
* gcc.target/s390/sigfpe-eh.c: New test.
From-SVN: r277874
+2019-11-06 Ilya Leoshkevich <iii@linux.ibm.com>
+ Backport from mainline
+
+ * config/s390/s390.c (s390_canonicalize_comparison): Use XEXP
+ (*op0, 1) instead of XEXP (*op1, 0).
+
2019-11-05 Segher Boessenkool <segher@kernel.crashing.org>
Backport from trunk
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);
+2019-11-06 Ilya Leoshkevich <iii@linux.ibm.com>
+
+ Backport from mainline
+ * gcc.target/s390/sigfpe-eh.c: New test.
+
2019-11-05 Andreas Krebbel <krebbel@linux.ibm.com>
Backport from mainline
--- /dev/null
+/* { dg-do compile } */
+/* { dg-options "-march=z196 -O2 -fexceptions -fnon-call-exceptions" } */
+
+extern float f (void);
+extern float g (void);
+
+float h (float x, float y)
+{
+ return x < y ? f () : g ();
+}