]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
match: Combine two patterns into for.
authorKael Andrew Alonzo Franco <kaelfandrew@gmail.com>
Sun, 2 Aug 2026 11:53:30 +0000 (07:53 -0400)
committerKael Andrew Alonzo Franco <kaelfandrew@gmail.com>
Sun, 2 Aug 2026 11:53:30 +0000 (07:53 -0400)
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.

gcc/match.pd

index b757aaf6f6952e58248f3fd76a674558bcf5242e..eb9eac600d0f17af945adc4bced2e662e3fed445 100644 (file)
@@ -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))