[Mlir-commits] [mlir] [mlir][scf] Do not coalesce when an inner loop reads an outer iter_arg (PR #216853)

Federico Bruzzone llvmlistbot at llvm.org
Sat Sep 5 05:18:55 PDT 2026


================
@@ -1006,6 +1006,24 @@ LogicalResult mlir::coalesceLoops(RewriterBase &rewriter,
       }
     }
   }
+
+  // Bail out if an iteration argument of an enclosing loop is read anywhere
+  // other than as the init operand of the loop nested in it. Coalescing maps
+  // the iteration arguments of every loop in the band onto the ones of the
+  // outermost loop, which turns such a read into a read of the value carried by
+  // the coalesced loop. That value is updated on every iteration, whereas the
+  // one being read is fixed for a whole run of the inner loop. This covers both
+  // a read inside the inner loop's region and, in an imperfect nest, one from
+  // an operation sitting between the two loops.
----------------
FedericoBruzzone wrote:

Thank you for addressing my comments 🙏

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


More information about the Mlir-commits mailing list