[Mlir-commits] [mlir] 5e24884 - [mlir][bufferization] Skip read collection when no writes exist (#231771)

llvmlistbot at llvm.org llvmlistbot at llvm.org
Wed Oct 14 20:15:00 PDT 2026


Author: Akun
Date: 2026-10-15T12:14:54+09:00
New Revision: 5e24884521ecb3f665a3b34491eebdb468c4d43d

URL: https://github.com/llvm/llvm-project/commit/5e24884521ecb3f665a3b34491eebdb468c4d43d
DIFF: https://github.com/llvm/llvm-project/commit/5e24884521ecb3f665a3b34491eebdb468c4d43d.diff

LOG: [mlir][bufferization] Skip read collection when no writes exist (#231771)

Collect aliasing writes before reads in the One-Shot Bufferization RaW
interference check. When there are no in-place writes, return without
collecting aliasing reads.

This avoids unnecessary read scans during pre-bufferization checks and
other cases without writes.

Added: 
    

Modified: 
    mlir/lib/Dialect/Bufferization/Transforms/OneShotAnalysis.cpp

Removed: 
    


################################################################################
diff  --git a/mlir/lib/Dialect/Bufferization/Transforms/OneShotAnalysis.cpp b/mlir/lib/Dialect/Bufferization/Transforms/OneShotAnalysis.cpp
index e8b3404843217..4a5752c8b7fbe 100644
--- a/mlir/lib/Dialect/Bufferization/Transforms/OneShotAnalysis.cpp
+++ b/mlir/lib/Dialect/Bufferization/Transforms/OneShotAnalysis.cpp
@@ -1176,15 +1176,21 @@ static bool wouldCreateReadAfterWriteInterference(
     OpOperand &operand, const DominanceInfo &domInfo,
     OneShotAnalysisState &state, bool checkConsistencyOnly = false) {
   // Collect reads and writes of all aliases of OpOperand and OpResult.
-  DenseSet<OpOperand *> usesRead, usesWrite;
-  getAliasingReads(usesRead, operand.get(), state);
+  // Collect writes before reads: without a write, there can be no conflict.
+  DenseSet<OpOperand *> usesWrite;
   getAliasingInplaceWrites(usesWrite, operand.get(), state);
-  for (AliasingValue alias : state.getAliasingValues(operand)) {
-    getAliasingReads(usesRead, alias.value, state);
+  AliasingValueList aliases = state.getAliasingValues(operand);
+  for (AliasingValue alias : aliases)
     getAliasingInplaceWrites(usesWrite, alias.value, state);
-  }
   if (!checkConsistencyOnly && state.bufferizesToMemoryWrite(operand))
     usesWrite.insert(&operand);
+  if (usesWrite.empty())
+    return false;
+
+  DenseSet<OpOperand *> usesRead;
+  getAliasingReads(usesRead, operand.get(), state);
+  for (AliasingValue alias : aliases)
+    getAliasingReads(usesRead, alias.value, state);
 
   return hasReadAfterWriteInterference(usesRead, usesWrite, domInfo, state);
 }


        


More information about the Mlir-commits mailing list