From: Segher Boessenkool Date: Fri, 19 Mar 2021 15:02:00 +0000 (+0000) Subject: ubsan: Don't test for NaNs if those do not exist (PR97926) X-Git-Tag: basepoints/gcc-12~490 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=ba16797fe69a0fae47355aa2c102ffac1c48c3bd;p=thirdparty%2Fgcc.git ubsan: Don't test for NaNs if those do not exist (PR97926) 2021-03-22 Segher Boessenkool PR target/97926 * ubsan.c (ubsan_instrument_float_cast): Don't test for unordered if there are no NaNs. --- 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;