https://github.com/matthias-springer created https://github.com/llvm/llvm-project/pull/144664
Manually populate the `unresolvedMaterializations` map instead of automatically in the `UnresolvedMaterializationRewrite` constructor. This simplifies the constructor a bit. This commit is in preparation of the One-Shot Dialect Conversion refactoring: `allowPatternRollback = false` will in the future trigger immediate materialization of all IR changes. Depends on #144254. >From ede5b9e79c478ef45107c9249db6534427ee2cff Mon Sep 17 00:00:00 2001 From: Matthias Springer <m...@m-sp.org> Date: Wed, 18 Jun 2025 09:50:40 +0000 Subject: [PATCH] [mlir][Transforms][NFC] Dialect Conversion: Manually push rewrite onto stack --- mlir/lib/Transforms/Utils/DialectConversion.cpp | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/mlir/lib/Transforms/Utils/DialectConversion.cpp b/mlir/lib/Transforms/Utils/DialectConversion.cpp index c4b85ec4f67d6..8b94bc564d169 100644 --- a/mlir/lib/Transforms/Utils/DialectConversion.cpp +++ b/mlir/lib/Transforms/Utils/DialectConversion.cpp @@ -869,9 +869,10 @@ struct ConversionPatternRewriterImpl : public RewriterBase::Listener { /// Append a rewrite. Rewrites are committed upon success and rolled back upon /// failure. template <typename RewriteTy, typename... Args> - void appendRewrite(Args &&...args) { + RewriteTy *appendRewrite(Args &&...args) { rewrites.push_back( std::make_unique<RewriteTy>(*this, std::forward<Args>(args)...)); + return static_cast<RewriteTy *>(rewrites.back().get()); } /// Undo the rewrites (motions, splits) one by one in reverse order until @@ -1181,7 +1182,6 @@ UnresolvedMaterializationRewrite::UnresolvedMaterializationRewrite( mappedValues(std::move(mappedValues)) { assert((!originalType || kind == MaterializationKind::Target) && "original type is valid only for target materializations"); - rewriterImpl.unresolvedMaterializations[op] = this; } void UnresolvedMaterializationRewrite::rollback() { @@ -1471,8 +1471,9 @@ ValueRange ConversionPatternRewriterImpl::buildUnresolvedMaterialization( mapping.map(valuesToMap, convertOp.getResults()); if (castOp) *castOp = convertOp; - appendRewrite<UnresolvedMaterializationRewrite>( - convertOp, converter, kind, originalType, std::move(valuesToMap)); + unresolvedMaterializations[convertOp] = + appendRewrite<UnresolvedMaterializationRewrite>( + convertOp, converter, kind, originalType, std::move(valuesToMap)); return convertOp.getResults(); } _______________________________________________ llvm-branch-commits mailing list llvm-branch-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-branch-commits