Disable incorrect optimization for varargs and list of string literals
This commit is contained in:
committed by
SvyatoslavScherbina
parent
ba935c640b
commit
4d0daaf461
+1
-1
@@ -40,7 +40,7 @@ enum class KonanPhase(val description: String,
|
|||||||
/* ... ... */ LOWER_FINALLY("Finally blocks lowering", LOWER_INITIALIZERS, LOWER_LOCAL_FUNCTIONS, LOWER_TAILREC),
|
/* ... ... */ 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_DEFAULT_PARAMETER_EXTENT("Default Parameter Extent Lowering", LOWER_TAILREC, LOWER_ENUMS),
|
||||||
/* ... ... */ LOWER_VARARG("Vararg lowering", LOWER_CALLABLES, LOWER_DEFAULT_PARAMETER_EXTENT),
|
/* ... ... */ 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_INNER_CLASSES("Inner classes lowering", LOWER_DEFAULT_PARAMETER_EXTENT, GEN_SYNTHETIC_FIELDS),
|
||||||
/* ... ... */ LOWER_BUILTIN_OPERATORS("BuiltIn Operators Lowering", LOWER_DEFAULT_PARAMETER_EXTENT),
|
/* ... ... */ LOWER_BUILTIN_OPERATORS("BuiltIn Operators Lowering", LOWER_DEFAULT_PARAMETER_EXTENT),
|
||||||
/* ... ... */ LOWER_COROUTINES("Coroutines lowering", LOWER_LOCAL_FUNCTIONS),
|
/* ... ... */ LOWER_COROUTINES("Coroutines lowering", LOWER_LOCAL_FUNCTIONS),
|
||||||
|
|||||||
-4
@@ -100,10 +100,6 @@ class VarargInjectionLowering constructor(val context: CommonBackendContext): De
|
|||||||
override fun visitVararg(expression: IrVararg): IrExpression {
|
override fun visitVararg(expression: IrVararg): IrExpression {
|
||||||
expression.transformChildrenVoid(transformer)
|
expression.transformChildrenVoid(transformer)
|
||||||
val hasSpreadElement = hasSpreadElement(expression)
|
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)
|
val irBuilder = context.createIrBuilder(owner, expression.startOffset, expression.endOffset)
|
||||||
irBuilder.run {
|
irBuilder.run {
|
||||||
val type = expression.varargElementType
|
val type = expression.varargElementType
|
||||||
|
|||||||
@@ -1884,6 +1884,7 @@ task listof0(type: RunKonanTest) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
task listof1(type: RunKonanTest) {
|
task listof1(type: RunKonanTest) {
|
||||||
|
disabled = true
|
||||||
goldValue = "true\n[a, b, c]\n"
|
goldValue = "true\n[a, b, c]\n"
|
||||||
source = "datagen/literals/listof1.kt"
|
source = "datagen/literals/listof1.kt"
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user