https://gcc.gnu.org/bugzilla/show_bug.cgi?id=120280

--- Comment #4 from Andrew Pinski <pinskia at gcc dot gnu.org> ---
```
diff --git a/gcc/match.pd b/gcc/match.pd
index 79485f9678a..7b2cad9d605 100644
--- a/gcc/match.pd
+++ b/gcc/match.pd
@@ -2598,6 +2598,15 @@ DEFINE_INT_AND_FLOAT_ROUND_FN (RINT)
  )
 )

+/* Convert ABS_EXPR<x> >= 0 to true.  */
+/* Convert ABS_EXPR<x> < 0 to false.  */
+(for cmp (ge lt)
+ (simplify
+  (cmp tree_expr_nonnegative_p@0 zerop@1)
+  (if (!fixed_zerop (@1)
+       && (cmp == LT_EXPR || !HONOR_NANS (@0)))
+   { constant_boolean_node (cmp == GE_EXPR, type); })))
+
 /* For integral types with undefined overflow and C != 0 fold
    x * C EQ/NE y * C into x EQ/NE y.  */
 (for cmp (eq ne)

```

Reply via email to