Skip to content

Commit f09c16e

Browse files
author
Aviad Cohen
committed
[mlir][linalg]: Fixed possible memory leak in cloneToCollapsedOp
* Direct call to `clone` function leads to memory leak. Instead, we would can use `RewriterBase` clone function.
1 parent 07d5f49 commit f09c16e

File tree

1 file changed

+6
-3
lines changed

1 file changed

+6
-3
lines changed

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

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1497,9 +1497,12 @@ LinalgOp cloneToCollapsedOp<LinalgOp>(RewriterBase &rewriter, LinalgOp origOp,
14971497
SmallVector<Type> resultTypes;
14981498
collapseOperandsAndResults(origOp, collapsingInfo, rewriter, inputOperands,
14991499
outputOperands, resultTypes);
1500-
return cast<LinalgOp>(clone(
1501-
rewriter, origOp, resultTypes,
1502-
llvm::to_vector(llvm::concat<Value>(inputOperands, outputOperands))));
1500+
IRMapping mapper;
1501+
for (auto [orig, input] : llvm::zip(origOp.getDpsInputs(), inputOperands))
1502+
mapper.map(orig, input);
1503+
for (auto [orig, output] : llvm::zip(origOp.getDpsInits(), outputOperands))
1504+
mapper.map(orig, output);
1505+
return cast<LinalgOp>(rewriter.clone(*origOp.getOperation(), mapper));
15031506
}
15041507

15051508
/// Collapse a `GenericOp`

0 commit comments

Comments
 (0)