From: Kael Andrew Alonzo Franco Date: Sun, 2 Aug 2026 11:53:30 +0000 (-0400) Subject: match: Combine two patterns into for. X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=8640e4b2efcdc588969110d61a5cdcb23518bad6;p=thirdparty%2Fgcc.git match: Combine two patterns into for. This simplify r6-4336 so genmatch outputs less C++ code. Bootstrapped and regtested on x86_64-pc-linux-gnu. gcc/ChangeLog: * match.pd: Combine two patterns into for. --- diff --git a/gcc/match.pd b/gcc/match.pd index b757aaf6f69..eb9eac600d0 100644 --- a/gcc/match.pd +++ b/gcc/match.pd @@ -4510,27 +4510,27 @@ DEFINE_INT_AND_FLOAT_ROUND_FN (RINT) /* Simplifications of MIN_EXPR, MAX_EXPR, fmin() and fmax(). */ (for minmax (min max) + maxmin (max min) (simplify (minmax @0 @0) @0) /* max(max(x,y),x) -> max(x,y) */ (simplify (minmax:c (minmax:c@2 @0 @1) @0) - @2)) + @2) + +/* min(max(x,y),y) -> y. + max(min(x,y),y) -> y. */ + (simplify + (minmax:c (maxmin:c @0 @1) @1) + @1)) + /* For fmin() and fmax(), skip folding when both are sNaN. */ (for minmax (FMIN_ALL FMAX_ALL) (simplify (minmax @0 @0) (if (!tree_expr_maybe_signaling_nan_p (@0)) @0))) -/* min(max(x,y),y) -> y. */ -(simplify - (min:c (max:c @0 @1) @1) - @1) -/* max(min(x,y),y) -> y. */ -(simplify - (max:c (min:c @0 @1) @1) - @1) /* max(a,-a) -> abs(a). */ (simplify (max:c @0 (negate @0))