From 4d0daaf4614cfcf423c2ab1bbee9e6621d133ff1 Mon Sep 17 00:00:00 2001 From: Svyatoslav Scherbina Date: Mon, 10 Dec 2018 14:24:21 +0300 Subject: [PATCH] Disable incorrect optimization for varargs and list of string literals --- .../src/org/jetbrains/kotlin/backend/konan/KonanPhases.kt | 2 +- .../jetbrains/kotlin/backend/konan/lower/VarargLowering.kt | 4 ---- backend.native/tests/build.gradle | 1 + 3 files changed, 2 insertions(+), 5 deletions(-) diff --git a/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/KonanPhases.kt b/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/KonanPhases.kt index 7aeae254f61..e2ae1c7658d 100644 --- a/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/KonanPhases.kt +++ b/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/KonanPhases.kt @@ -40,7 +40,7 @@ enum class KonanPhase(val description: String, /* ... ... */ LOWER_FINALLY("Finally blocks lowering", LOWER_INITIALIZERS, LOWER_LOCAL_FUNCTIONS, LOWER_TAILREC), /* ... ... */ LOWER_DEFAULT_PARAMETER_EXTENT("Default Parameter Extent Lowering", LOWER_TAILREC, LOWER_ENUMS), /* ... ... */ LOWER_VARARG("Vararg lowering", LOWER_CALLABLES, LOWER_DEFAULT_PARAMETER_EXTENT), - /* ... ... */ LOWER_COMPILE_TIME_EVAL("Compile time evaluation lowering", LOWER_VARARG), + /* ... ... */ LOWER_COMPILE_TIME_EVAL("Compile time evaluation lowering", LOWER_VARARG, enabled = false), /* ... ... */ LOWER_INNER_CLASSES("Inner classes lowering", LOWER_DEFAULT_PARAMETER_EXTENT, GEN_SYNTHETIC_FIELDS), /* ... ... */ LOWER_BUILTIN_OPERATORS("BuiltIn Operators Lowering", LOWER_DEFAULT_PARAMETER_EXTENT), /* ... ... */ LOWER_COROUTINES("Coroutines lowering", LOWER_LOCAL_FUNCTIONS), diff --git a/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/lower/VarargLowering.kt b/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/lower/VarargLowering.kt index 17012c8f9be..a2cd2613a52 100644 --- a/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/lower/VarargLowering.kt +++ b/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/lower/VarargLowering.kt @@ -100,10 +100,6 @@ class VarargInjectionLowering constructor(val context: CommonBackendContext): De override fun visitVararg(expression: IrVararg): IrExpression { expression.transformChildrenVoid(transformer) val hasSpreadElement = hasSpreadElement(expression) - if (!hasSpreadElement && expression.elements.all { it is IrConst<*> && it.type.isString() }) { - log { "skipped vararg expression because it's string array literal" } - return expression - } val irBuilder = context.createIrBuilder(owner, expression.startOffset, expression.endOffset) irBuilder.run { val type = expression.varargElementType diff --git a/backend.native/tests/build.gradle b/backend.native/tests/build.gradle index fc7afe4aa16..024dfc5199a 100644 --- a/backend.native/tests/build.gradle +++ b/backend.native/tests/build.gradle @@ -1884,6 +1884,7 @@ task listof0(type: RunKonanTest) { } task listof1(type: RunKonanTest) { + disabled = true goldValue = "true\n[a, b, c]\n" source = "datagen/literals/listof1.kt" }