From 16e0be9b8e67554b4c43b7bbd57978fb6e9f4611 Mon Sep 17 00:00:00 2001 From: Peter Bergner Date: Thu, 9 Feb 2012 08:46:02 -0600 Subject: [PATCH] re PR middle-end/52140 (Libdfp testcase encounters ICE when compiled with soft-dfp (no -mcpu).) gcc/ 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. From-SVN: r184045 --- gcc/ChangeLog | 5 +++++ gcc/dojump.c | 4 ++-- gcc/testsuite/ChangeLog | 5 +++++ gcc/testsuite/gcc.dg/dfp/pr52140.c | 10 ++++++++++ 4 files changed, 22 insertions(+), 2 deletions(-) create mode 100644 gcc/testsuite/gcc.dg/dfp/pr52140.c diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 07ae1a8a31b1..f3b735476f9e 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,8 @@ +2012-02-09 Peter Bergner + + PR middle-end/52140 + * dojump.c (do_compare_rtx_and_jump): Use SCALAR_FLOAT_MODE_P. + 2012-02-09 Jakub Jelinek PR debug/52165 diff --git a/gcc/dojump.c b/gcc/dojump.c index 093d3ef2d6d1..91bebee1400b 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 5ec0695b021c..7ccb66b12622 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2012-02-09 Peter Bergner + + PR middle-end/52140 + * gcc.dg/dfp/pr52140.c: New test. + 2012-02-09 Jakub Jelinek 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 000000000000..ca878f2d87da --- /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); +}