diff options
author | Roger Sayle <roger@nextmovesoftware.com> | 2022-03-16 09:25:34 +0000 |
---|---|---|
committer | Roger Sayle <roger@nextmovesoftware.com> | 2022-03-16 09:25:34 +0000 |
commit | 7690bee9f36ee02b7ad0b8a7e7a3e08357890dc0 (patch) | |
tree | 96d0cfb2b5a7b18bdc78e06cb72d2183f08f59af | |
parent | ab46fc7c3bf01337ea4554f08f4f6b0be8173557 (diff) | |
download | gcc-7690bee9f36ee02b7ad0b8a7e7a3e08357890dc0.zip gcc-7690bee9f36ee02b7ad0b8a7e7a3e08357890dc0.tar.gz gcc-7690bee9f36ee02b7ad0b8a7e7a3e08357890dc0.tar.bz2 |
Some minor HONOR_NANS improvements to match.pd
Tweak the constant folding of X CMP X in when X can't be a NaN.
2022-03-16 Roger Sayle <roger@nextmovesoftware.com>
gcc/ChangeLog
* match.pd (X CMP X -> true): Test tree_expr_maybe_nan_p
instead of HONOR_NANS.
(X LTGT X -> false): Enable if X is not tree_expr_maybe_nan_p, as
this can't trap/signal.
-rw-r--r-- | gcc/match.pd | 6 |
1 files changed, 3 insertions, 3 deletions
diff --git a/gcc/match.pd b/gcc/match.pd index 7d619f4..6d691d3 100644 --- a/gcc/match.pd +++ b/gcc/match.pd @@ -4743,7 +4743,7 @@ DEFINE_INT_AND_FLOAT_ROUND_FN (RINT) (simplify (cmp @0 @0) (if (! FLOAT_TYPE_P (TREE_TYPE (@0)) - || ! HONOR_NANS (@0)) + || ! tree_expr_maybe_nan_p (@0)) { constant_boolean_node (true, type); } (if (cmp != EQ_EXPR /* With -ftrapping-math conversion to EQ loses an exception. */ @@ -4755,7 +4755,7 @@ DEFINE_INT_AND_FLOAT_ROUND_FN (RINT) (cmp @0 @0) (if (cmp != NE_EXPR || ! FLOAT_TYPE_P (TREE_TYPE (@0)) - || ! HONOR_NANS (@0)) + || ! tree_expr_maybe_nan_p (@0)) { constant_boolean_node (false, type); }))) (for cmp (unle unge uneq) (simplify @@ -4767,7 +4767,7 @@ DEFINE_INT_AND_FLOAT_ROUND_FN (RINT) (unordered @0 @0))) (simplify (ltgt @0 @0) - (if (!flag_trapping_math) + (if (!flag_trapping_math || !tree_expr_maybe_nan_p (@0)) { constant_boolean_node (false, type); })) /* x == ~x -> false */ |