From: Andrew Pinski Date: Tue, 12 Sep 2023 17:43:23 +0000 (-0700) Subject: MATCH: Simplify `(X % Y) < Y` pattern. X-Git-Tag: basepoints/gcc-15~6218 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=635a34e2be67d709088c31573732dfdf733e4cec;p=thirdparty%2Fgcc.git MATCH: Simplify `(X % Y) < Y` pattern. This merges the two patterns to catch `(X % Y) < Y` and `Y > (X % Y)` into one by using :c on the comparison operator. It does not change any code generation nor anything else. It is more to allow for better maintainability of this pattern. OK? Bootstrapped and tested on x86_64-linux-gnu. gcc/ChangeLog: PR tree-optimization/111345 * match.pd (`Y > (X % Y)`): Merge into ... (`(X % Y) < Y`): Pattern by adding `:c` on the comparison. --- diff --git a/gcc/match.pd b/gcc/match.pd index 693638f8ca03..0d865d8295f1 100644 --- a/gcc/match.pd +++ b/gcc/match.pd @@ -1486,14 +1486,9 @@ DEFINE_INT_AND_FLOAT_ROUND_FN (RINT) /* X % Y is smaller than Y. */ (for cmp (lt ge) (simplify - (cmp (trunc_mod @0 @1) @1) + (cmp:c (trunc_mod @0 @1) @1) (if (TYPE_UNSIGNED (TREE_TYPE (@0))) { constant_boolean_node (cmp == LT_EXPR, type); }))) -(for cmp (gt le) - (simplify - (cmp @1 (trunc_mod @0 @1)) - (if (TYPE_UNSIGNED (TREE_TYPE (@0))) - { constant_boolean_node (cmp == GT_EXPR, type); }))) /* x | ~0 -> ~0 */ (simplify