From: Aldy Hernandez Date: Wed, 21 Sep 2022 09:18:48 +0000 (+0200) Subject: [PR106967] Set known NANs to undefined for flag_finite_math_only. X-Git-Tag: basepoints/gcc-14~4446 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=dc829c7613ddf562d1aecaf22eda965e87108ac8;p=thirdparty%2Fgcc.git [PR106967] Set known NANs to undefined for flag_finite_math_only. Explicit NANs in the IL can be treated as undefined for flag_finite_math_only. This causes all the right things to happen wrt threading, folding, etc. It also saves us special casing throughout. PR tree-optimization/106967 gcc/ChangeLog: * value-range.cc (frange::set): Set known NANs to undefined for flag_finite_math_only. --- diff --git a/gcc/value-range.cc b/gcc/value-range.cc index 505eb9211a79..7e8028eced2a 100644 --- a/gcc/value-range.cc +++ b/gcc/value-range.cc @@ -313,8 +313,13 @@ frange::set (tree min, tree max, value_range_kind kind) gcc_checking_assert (real_identical (TREE_REAL_CST_PTR (min), TREE_REAL_CST_PTR (max))); tree type = TREE_TYPE (min); - bool sign = real_isneg (TREE_REAL_CST_PTR (min)); - set_nan (type, sign); + if (HONOR_NANS (type)) + { + bool sign = real_isneg (TREE_REAL_CST_PTR (min)); + set_nan (type, sign); + } + else + set_undefined (); return; }