diff --git a/mlir/lib/Transforms/Utils/DialectConversion.cpp b/mlir/lib/Transforms/Utils/DialectConversion.cpp --- a/mlir/lib/Transforms/Utils/DialectConversion.cpp +++ b/mlir/lib/Transforms/Utils/DialectConversion.cpp @@ -1068,7 +1068,7 @@ // Handle the case where the conversion was 1->1 and the new operand type // isn't legal. Type newOperandType = newOperand.getType(); - if (converter && desiredType && newOperandType != desiredType) { + if (converter && desiredType && !converter->isLegal(newOperandType)) { // Attempt to materialize a conversion for this new value. newOperand = converter->materializeTargetConversion( rewriter, loc, desiredType, newOperand);