Skip to content

Commit a671f3d

Browse files
committed
fixup! fixup! [mlir][linalg] Prevent hoisting of transfer pairs in the presence of aliases
Make sure only uses inside the loop are counted
1 parent 36bbbdc commit a671f3d

File tree

1 file changed

+6
-1
lines changed

1 file changed

+6
-1
lines changed

mlir/lib/Dialect/Linalg/Transforms/Hoisting.cpp

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -330,7 +330,12 @@ void mlir::linalg::hoistRedundantVectorTransfers(Operation *root,
330330
// `memref.assume_alignment`)
331331
if (auto assume = dyn_cast<memref::AssumeAlignmentOp>(source)) {
332332
Value memPreAlignment = assume.getMemref();
333-
if (base.hasNUses(2) && memPreAlignment.hasOneUse())
333+
auto numInLoopUses =
334+
llvm::count_if(base.getUses(), [&loop](OpOperand &use) {
335+
return loop->isAncestor(use.getOwner());
336+
});
337+
338+
if (numInLoopUses && memPreAlignment.hasOneUse())
334339
source = memPreAlignment.getDefiningOp();
335340
}
336341
if (isa_and_nonnull<ViewLikeOpInterface>(source))

0 commit comments

Comments
 (0)