[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