Tested on powerpc64-linux {-m32,-m64}. No regressions. Is this okay for trunk?
Segher 2021-03-19 Segher Boessenkool <seg...@kernel.crashing.org> PR target/97926 * ubsan.c (ubsan_instrument_float_cast): Don't test for unordered if there are no NaNs. --- gcc/ubsan.c | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/gcc/ubsan.c b/gcc/ubsan.c index d752b897d642..1089aef639ff 100644 --- a/gcc/ubsan.c +++ b/gcc/ubsan.c @@ -1890,8 +1890,16 @@ ubsan_instrument_float_cast (location_t loc, tree type, tree expr) else return NULL_TREE; - t = fold_build2 (UNLE_EXPR, boolean_type_node, expr, min); - tt = fold_build2 (UNGE_EXPR, boolean_type_node, expr, max); + if (HONOR_NANS (mode)) + { + t = fold_build2 (UNLE_EXPR, boolean_type_node, expr, min); + tt = fold_build2 (UNGE_EXPR, boolean_type_node, expr, max); + } + else + { + t = fold_build2 (LE_EXPR, boolean_type_node, expr, min); + tt = fold_build2 (GE_EXPR, boolean_type_node, expr, max); + } t = fold_build2 (TRUTH_OR_EXPR, boolean_type_node, t, tt); if (integer_zerop (t)) return NULL_TREE; -- 1.8.3.1