diff --git a/mlir/lib/Transforms/Utils/DialectConversion.cpp b/mlir/lib/Transforms/Utils/DialectConversion.cpp index 8a4c7463a69a9..bf2990c257bad 100644 --- a/mlir/lib/Transforms/Utils/DialectConversion.cpp +++ b/mlir/lib/Transforms/Utils/DialectConversion.cpp @@ -2527,6 +2527,7 @@ LogicalResult OperationConverter::legalizeConvertedOpResultTypes( opReplacement->getConverter()); rewriterImpl.mapping.map(result, castValue); inverseMapping[castValue].push_back(result); + llvm::erase(inverseMapping[newValue], result); } } diff --git a/mlir/test/Transforms/test-legalize-target-materialization-no-uses.mlir b/mlir/test/Transforms/test-legalize-target-materialization-no-uses.mlir index 19dd2b2ee4b2f..5e694a04af49a 100644 --- a/mlir/test/Transforms/test-legalize-target-materialization-no-uses.mlir +++ b/mlir/test/Transforms/test-legalize-target-materialization-no-uses.mlir @@ -1,4 +1,4 @@ -// RUN: mlir-opt -test-target-materialization-with-no-uses %s | FileCheck %s +// RUN: mlir-opt -test-target-materialization-with-no-uses -split-input-file %s | FileCheck %s // The conversion is set up as follows: // - type_changer ops are illegal; @@ -25,3 +25,12 @@ func.func @foo() { "test.type_consumer"(%2) : (i64) -> () return } + +// ----- + +// CHECK-LABEL: @direct_forward +func.func @direct_forward(%arg0 : i16) -> i16 { + // CHECK-NEXT: return + %0 = "test.type_changer"(%arg0) : (i16) -> i16 + return %0 : i16 +}