[llvm] [DAGCombiner] Fix commutativity in the (X + Y) + X --> Y + (X + X) fold. (PR #226021)

Simon Pilgrim via llvm-commits llvm-commits at lists.llvm.org
Mon Sep 28 06:27:50 PDT 2026


================
@@ -3024,10 +3024,12 @@ SDValue DAGCombiner::visitADDLike(SDNode *N) {
 
     // (X + Y) + X --> Y + (X + X)
     SDValue X, Y, InnerAdd;
-    if (sd_match(
-            N, m_Add(m_OneUse(m_Value(InnerAdd, m_Add(m_Value(X), m_Value(Y)))),
-                     m_Deferred(X)))) {
-      if (X != Y) {
+    if (sd_match(N, m_Add(m_Value(X),
----------------
RKSimon wrote:

SDPatternMatch went for commutativity by default for the common commutative binop matchers - undoing that decision is going to be messy

https://github.com/llvm/llvm-project/pull/226021


More information about the llvm-commits mailing list