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

Reply via email to