From 11026039f7ce600ff04fcf2e54a84035f4484678 Mon Sep 17 00:00:00 2001 From: Matthias Springer Date: Sat, 4 Jan 2025 13:37:30 +0100 Subject: [PATCH] [mlir][Transforms] Fix mapping in `findOrBuildReplacementValue` Fixes two minor issues in `findOrBuildReplacementValue`: * Remove a redundant `mapping.map`. * Map `repl` instead of `value`. We used to overwrite an existing mapping, which may introduce extra materializations. Note: We generally do not want to overwrite mappings, but create a chain of mappings. There are still a few more places, where a mapping is overwritten. Once those are fixed, I will put an assertion into `ConversionValueMapping::map`. --- mlir/lib/Transforms/Utils/DialectConversion.cpp | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/mlir/lib/Transforms/Utils/DialectConversion.cpp b/mlir/lib/Transforms/Utils/DialectConversion.cpp index 6c3863e4c7f66..4904d3ce3f863 100644 --- a/mlir/lib/Transforms/Utils/DialectConversion.cpp +++ b/mlir/lib/Transforms/Utils/DialectConversion.cpp @@ -1533,11 +1533,10 @@ Value ConversionPatternRewriterImpl::findOrBuildReplacementValue( Value castValue = buildUnresolvedMaterialization(MaterializationKind::Source, computeInsertPoint(repl), value.getLoc(), - /*valuesToMap=*/{value}, /*inputs=*/repl, + /*valuesToMap=*/repl, /*inputs=*/repl, /*outputType=*/value.getType(), /*originalType=*/Type(), converter) .front(); - mapping.map(value, castValue); return castValue; }