aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRoger Sayle <roger@nextmovesoftware.com>2022-03-16 09:25:34 +0000
committerRoger Sayle <roger@nextmovesoftware.com>2022-03-16 09:25:34 +0000
commit7690bee9f36ee02b7ad0b8a7e7a3e08357890dc0 (patch)
tree96d0cfb2b5a7b18bdc78e06cb72d2183f08f59af
parentab46fc7c3bf01337ea4554f08f4f6b0be8173557 (diff)
downloadgcc-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.pd6
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 */