From 27642514b1115c7a331bb56b14f8a136f1bdf05e Mon Sep 17 00:00:00 2001 From: Mark Punzalan Date: Wed, 23 Oct 2019 16:14:39 -0700 Subject: [PATCH] Move ForLoopsLowering before JvmStringConcatenationLowering. ForLoopsLowering may produce IrStringConcatenations which should be eliminated before codegen. --- .../src/org/jetbrains/kotlin/backend/jvm/JvmLower.kt | 2 +- .../backend/jvm/lower/JvmStringConcatenationLowering.kt | 7 ++++++- 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/compiler/ir/backend.jvm/src/org/jetbrains/kotlin/backend/jvm/JvmLower.kt b/compiler/ir/backend.jvm/src/org/jetbrains/kotlin/backend/jvm/JvmLower.kt index 1128bc86338..e78e684d367 100644 --- a/compiler/ir/backend.jvm/src/org/jetbrains/kotlin/backend/jvm/JvmLower.kt +++ b/compiler/ir/backend.jvm/src/org/jetbrains/kotlin/backend/jvm/JvmLower.kt @@ -220,6 +220,7 @@ private val jvmFilePhases = jvmOverloadsAnnotationPhase then jvmDefaultConstructorPhase then + forLoopsPhase then flattenStringConcatenationPhase then foldConstantLoweringPhase then computeStringTrimPhase then @@ -237,7 +238,6 @@ private val jvmFilePhases = innerClassesPhase then innerClassConstructorCallsPhase then - forLoopsPhase then makePatchParentsPhase(2) then diff --git a/compiler/ir/backend.jvm/src/org/jetbrains/kotlin/backend/jvm/lower/JvmStringConcatenationLowering.kt b/compiler/ir/backend.jvm/src/org/jetbrains/kotlin/backend/jvm/lower/JvmStringConcatenationLowering.kt index 0a60f5d7cc2..fc02dccb884 100644 --- a/compiler/ir/backend.jvm/src/org/jetbrains/kotlin/backend/jvm/lower/JvmStringConcatenationLowering.kt +++ b/compiler/ir/backend.jvm/src/org/jetbrains/kotlin/backend/jvm/lower/JvmStringConcatenationLowering.kt @@ -8,6 +8,8 @@ package org.jetbrains.kotlin.backend.jvm.lower import org.jetbrains.kotlin.backend.common.FileLoweringPass import org.jetbrains.kotlin.backend.common.IrElementTransformerVoidWithContext import org.jetbrains.kotlin.backend.common.lower.FlattenStringConcatenationLowering +import org.jetbrains.kotlin.backend.common.lower.flattenStringConcatenationPhase +import org.jetbrains.kotlin.backend.common.lower.loops.forLoopsPhase import org.jetbrains.kotlin.backend.common.phaser.makeIrFilePhase import org.jetbrains.kotlin.backend.jvm.JvmBackendContext import org.jetbrains.kotlin.backend.jvm.ir.JvmIrBuilder @@ -30,7 +32,10 @@ import org.jetbrains.kotlin.ir.visitors.transformChildrenVoid internal val jvmStringConcatenationLowering = makeIrFilePhase( ::JvmStringConcatenationLowering, name = "StringConcatenation", - description = "Replace IrStringConcatenation with string builders" + description = "Replace IrStringConcatenation with string builders", + // flattenStringConcatenationPhase consolidates string concatenation expressions. + // forLoopsPhase may produce IrStringConcatenations. + prerequisite = setOf(flattenStringConcatenationPhase, forLoopsPhase) ) /**