From: Yury Gribov Date: Fri, 29 Sep 2017 19:40:16 +0000 (+0000) Subject: re PR middle-end/82319 (ICE in generic_simplify_148, at generic-match.c:6436) X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=b09bf97bcd51adcc554e21213cd4159db95805a3;p=gcc.git re PR middle-end/82319 (ICE in generic_simplify_148, at generic-match.c:6436) 2017-09-29 Yury Gribov PR middle-end/82319 gcc/ * match.pd: Fix handling of NaNs in pattern. gcc/testsuite/ * c-c++/common/pr57371-4.c: Test NaN comparisons. From-SVN: r253307 --- diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 1932390dd0a..2063108fdfb 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,8 @@ +2017-09-29 Yury Gribov + + PR middle-end/82319 + * match.pd: Fix handling of NaNs in pattern. + 2017-09-29 Jeff Law * sbitmap.c (bitmap_bit_in_range_p): New function. diff --git a/gcc/match.pd b/gcc/match.pd index 43ab226a705..1136a598abb 100644 --- a/gcc/match.pd +++ b/gcc/match.pd @@ -2961,7 +2961,7 @@ DEFINE_INT_AND_FLOAT_ROUND_FN (RINT) else real_trunc (&icst, fmt, cst); - bool cst_int_p = real_identical (&icst, cst); + bool cst_int_p = !real_isnan (cst) && real_identical (&icst, cst); bool overflow_p = false; wide_int icst_val diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 0cf96a9e8ef..8cb533bd58b 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2017-09-29 Yury Gribov + + PR middle-end/82319 + * c-c++/common/pr57371-4.c: Test NaN comparisons. + 2017-09-29 Eric Botcazou * g++.dg/other/dump-ada-spec-10.C: New test. diff --git a/gcc/testsuite/c-c++-common/pr57371-4.c b/gcc/testsuite/c-c++-common/pr57371-4.c index 6265f520f93..f43f7c22419 100644 --- a/gcc/testsuite/c-c++-common/pr57371-4.c +++ b/gcc/testsuite/c-c++-common/pr57371-4.c @@ -69,4 +69,16 @@ void nonfinite(unsigned short x) { nonfinite_10 = (float) x != SNAN; /* { dg-final { scan-tree-dump "nonfinite_10 = \\(float\\)" "original" } } */ } + + { + volatile int nonfinite_11; + nonfinite_11 = (float) x == QNAN; + /* { dg-final { scan-tree-dump "nonfinite_11 = 0" "original" } } */ + } + + { + volatile int nonfinite_12; + nonfinite_12 = (float) x != QNAN; + /* { dg-final { scan-tree-dump "nonfinite_12 = 1" "original" } } */ + } }