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 <msprin...@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); _______________________________________________ llvm-branch-commits mailing list llvm-branch-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-branch-commits