aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--gcc/ChangeLog5
-rw-r--r--gcc/dojump.c4
-rw-r--r--gcc/testsuite/ChangeLog5
-rw-r--r--gcc/testsuite/gcc.dg/dfp/pr52140.c10
4 files changed, 22 insertions, 2 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 07ae1a8..f3b7354 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,8 @@
+2012-02-09 Peter Bergner <bergner@vnet.ibm.com>
+
+ PR middle-end/52140
+ * dojump.c (do_compare_rtx_and_jump): Use SCALAR_FLOAT_MODE_P.
+
2012-02-09 Jakub Jelinek <jakub@redhat.com>
PR debug/52165
diff --git a/gcc/dojump.c b/gcc/dojump.c
index 093d3ef..91bebee 100644
--- a/gcc/dojump.c
+++ b/gcc/dojump.c
@@ -1049,7 +1049,7 @@ do_compare_rtx_and_jump (rtx op0, rtx op1, enum rtx_code code, int unsignedp,
}
else
{
- if (GET_MODE_CLASS (mode) == MODE_FLOAT
+ if (SCALAR_FLOAT_MODE_P (mode)
&& ! can_compare_p (code, mode, ccp_jump)
&& can_compare_p (swap_condition (code), mode, ccp_jump))
{
@@ -1060,7 +1060,7 @@ do_compare_rtx_and_jump (rtx op0, rtx op1, enum rtx_code code, int unsignedp,
op1 = tmp;
}
- else if (GET_MODE_CLASS (mode) == MODE_FLOAT
+ else if (SCALAR_FLOAT_MODE_P (mode)
&& ! can_compare_p (code, mode, ccp_jump)
/* Never split ORDERED and UNORDERED. These must be implemented. */
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index 5ec0695..7ccb66b 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,3 +1,8 @@
+2012-02-09 Peter Bergner <bergner@vnet.ibm.com>
+
+ PR middle-end/52140
+ * gcc.dg/dfp/pr52140.c: New test.
+
2012-02-09 Jakub Jelinek <jakub@redhat.com>
PR fortran/32380
diff --git a/gcc/testsuite/gcc.dg/dfp/pr52140.c b/gcc/testsuite/gcc.dg/dfp/pr52140.c
new file mode 100644
index 0000000..ca878f2
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/dfp/pr52140.c
@@ -0,0 +1,10 @@
+/* { dg-do compile } */
+/* { dg-options "-O1" } */
+
+/* This used to result in an ICE. */
+
+int
+foo (_Decimal64 x, _Decimal64 y)
+{
+ return (x < y) || (x > y);
+}