[Mlir-commits] [mlir] [mlir][Transforms] Dialect conversion: Fix `-debug` crash (PR #125660)

Matthias Springer llvmlistbot at llvm.org
Tue Feb 4 01:55:41 PST 2025


https://github.com/matthias-springer created https://github.com/llvm/llvm-project/pull/125660

Fix a crash in `ConversionPatternRewriter::replaceUsesOfBlockArgument` when running with `-debug`. The block that owns the block argument can be a detached block. In that case, do not attempt to print the name of the owner op.


>From aa164ae623e69f39f01b4219b1a8a4a1b479b826 Mon Sep 17 00:00:00 2001
From: Matthias Springer <mspringer at nvidia.com>
Date: Tue, 4 Feb 2025 10:53:18 +0100
Subject: [PATCH] [mlir][Transforms] Dialect conversion: Fix `-debug` crash

---
 mlir/lib/Transforms/Utils/DialectConversion.cpp | 11 +++++++----
 1 file changed, 7 insertions(+), 4 deletions(-)

diff --git a/mlir/lib/Transforms/Utils/DialectConversion.cpp b/mlir/lib/Transforms/Utils/DialectConversion.cpp
index 403321d40d53c9..7bfcd192c9aa9c 100644
--- a/mlir/lib/Transforms/Utils/DialectConversion.cpp
+++ b/mlir/lib/Transforms/Utils/DialectConversion.cpp
@@ -1708,10 +1708,13 @@ FailureOr<Block *> ConversionPatternRewriter::convertRegionTypes(
 void ConversionPatternRewriter::replaceUsesOfBlockArgument(BlockArgument from,
                                                            Value to) {
   LLVM_DEBUG({
-    Operation *parentOp = from.getOwner()->getParentOp();
-    impl->logger.startLine() << "** Replace Argument : '" << from
-                             << "'(in region of '" << parentOp->getName()
-                             << "'(" << from.getOwner()->getParentOp() << ")\n";
+    impl->logger.startLine() << "** Replace Argument : '" << from << "'";
+    if (Operation *parentOp = from.getOwner()->getParentOp()) {
+      impl->logger.getOStream() << " (in region of '" << parentOp->getName()
+                                << "' (" << parentOp << ")\n";
+    } else {
+      impl->logger.getOStream() << " (unlinked block)\n";
+    }
   });
   impl->appendRewrite<ReplaceBlockArgRewrite>(from.getOwner(), from,
                                               impl->currentTypeConverter);



More information about the Mlir-commits mailing list