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) ```