OSDN Git Service

gcc/
authorbergner <bergner@138bc75d-0d04-0410-961f-82ee72b054a4>
Thu, 9 Feb 2012 14:46:02 +0000 (14:46 +0000)
committerbergner <bergner@138bc75d-0d04-0410-961f-82ee72b054a4>
Thu, 9 Feb 2012 14:46:02 +0000 (14:46 +0000)
PR middle-end/52140
* dojump.c (do_compare_rtx_and_jump): Use SCALAR_FLOAT_MODE_P.

gcc/testsuite/
PR middle-end/52140
* gcc.dg/dfp/pr52140.c: New test.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@184045 138bc75d-0d04-0410-961f-82ee72b054a4

gcc/ChangeLog
gcc/dojump.c
gcc/testsuite/ChangeLog
gcc/testsuite/gcc.dg/dfp/pr52140.c [new file with mode: 0644]

index 07ae1a8..f3b7354 100644 (file)
@@ -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
index 093d3ef..91bebee 100644 (file)
@@ -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.  */
index 5ec0695..7ccb66b 100644 (file)
@@ -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 (file)
index 0000000..ca878f2
--- /dev/null
@@ -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);
+}