[llvm-branch-commits] [mlir] [mlir][Transforms] Detect mapping overwrites during block signature conversion (PR #121646)

Matthias Springer via llvm-branch-commits llvm-branch-commits at lists.llvm.org
Sat Jan 4 04:55:49 PST 2025


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

Add extra assertions to make sure that a value in the conversion value mapping is not overwritten during `applySignatureConversion`.

Depends on #121644.


>From f0edd0362d0b4ff6b1b2aef53b9cce256d60da0d Mon Sep 17 00:00:00 2001
From: Matthias Springer <mspringer at nvidia.com>
Date: Sat, 4 Jan 2025 13:53:38 +0100
Subject: [PATCH] [mlir][Transforms] Detect mapping overwrites during block
 signature conversion

Add extra assertions to make sure that a value in the conversion value mapping is not overwritten during `applySignatureConversion`.
---
 mlir/lib/Transforms/Utils/DialectConversion.cpp | 8 ++++++++
 1 file changed, 8 insertions(+)

diff --git a/mlir/lib/Transforms/Utils/DialectConversion.cpp b/mlir/lib/Transforms/Utils/DialectConversion.cpp
index 4904d3ce3f8635..3201fad613d294 100644
--- a/mlir/lib/Transforms/Utils/DialectConversion.cpp
+++ b/mlir/lib/Transforms/Utils/DialectConversion.cpp
@@ -1364,6 +1364,14 @@ Block *ConversionPatternRewriterImpl::applySignatureConversion(
   if (hasRewrite<BlockTypeConversionRewrite>(rewrites, block))
     llvm::report_fatal_error("block was already converted");
 #endif // MLIR_ENABLE_EXPENSIVE_PATTERN_API_CHECKS
+#ifndef NDEBUG
+  // This check detects the following cases:
+  // * Attempting to convert the same block multiple times.
+  // * Block argument replaced, then attempting to convert the block.
+  for (BlockArgument arg : block->getArguments())
+    assert(mapping.lookupOrNull(arg).empty() &&
+           "cannot convert block whose arguments have been replaced");
+#endif // NDEBUG
 
   OpBuilder::InsertionGuard g(rewriter);
 



More information about the llvm-branch-commits mailing list