From 0482f7e9c5627ef076f66d9fd4a2c1832446a28f Mon Sep 17 00:00:00 2001 From: Mikhael Bogdanov Date: Mon, 29 Apr 2019 14:01:31 +0200 Subject: [PATCH] Restrict general compare intrinsic optimization to CompareTo intrinsic --- .../src/org/jetbrains/kotlin/codegen/ExpressionCodegen.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/compiler/backend/src/org/jetbrains/kotlin/codegen/ExpressionCodegen.java b/compiler/backend/src/org/jetbrains/kotlin/codegen/ExpressionCodegen.java index 9b32110bbad..a88ab2a0bc3 100644 --- a/compiler/backend/src/org/jetbrains/kotlin/codegen/ExpressionCodegen.java +++ b/compiler/backend/src/org/jetbrains/kotlin/codegen/ExpressionCodegen.java @@ -3817,7 +3817,6 @@ public class ExpressionCodegen extends KtVisitor impleme Type rightType = expressionType(right); TypeAndNullability left754Type = calcTypeForIeee754ArithmeticIfNeeded(left, getLeftOperandType(primitiveNumericComparisonInfo)); TypeAndNullability right754Type = calcTypeForIeee754ArithmeticIfNeeded(right, getRightOperandType(primitiveNumericComparisonInfo)); - Callable callable = resolveToCallable((FunctionDescriptor) resolvedCall.getResultingDescriptor(), false, resolvedCall); boolean isSame754ArithmeticTypes = left754Type != null && right754Type != null && left754Type.type.equals(right754Type.type); boolean properIeee754Comparisons = shouldUseProperIeee754Comparisons(); @@ -3827,7 +3826,8 @@ public class ExpressionCodegen extends KtVisitor impleme rightValue = gen(right); } else if (!properIeee754Comparisons && - callable instanceof IntrinsicCallable && ((isPrimitive(leftType) && isPrimitive(rightType)) || isSame754ArithmeticTypes)) { + state.getIntrinsics().getIntrinsic((FunctionDescriptor) resolvedCall.getResultingDescriptor()) instanceof CompareTo && + ((isPrimitive(leftType) && isPrimitive(rightType)) || isSame754ArithmeticTypes)) { type = isSame754ArithmeticTypes ? left754Type.type : comparisonOperandType(leftType, rightType); leftValue = gen(left); rightValue = gen(right);