From fe71435104d87096b9097024abfc6c07a1c4f5d9 Mon Sep 17 00:00:00 2001 From: Dmitry Petrov Date: Sat, 10 Jul 2021 20:37:30 +0300 Subject: [PATCH] JVM KT-47613 traverse nodes backwards in backward analysis --- .../kotlin/codegen/optimization/common/backwardAnalysis.kt | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/compiler/backend/src/org/jetbrains/kotlin/codegen/optimization/common/backwardAnalysis.kt b/compiler/backend/src/org/jetbrains/kotlin/codegen/optimization/common/backwardAnalysis.kt index e3ba541c3de..bf5ccbc5a15 100644 --- a/compiler/backend/src/org/jetbrains/kotlin/codegen/optimization/common/backwardAnalysis.kt +++ b/compiler/backend/src/org/jetbrains/kotlin/codegen/optimization/common/backwardAnalysis.kt @@ -38,13 +38,12 @@ fun > analyze(node: MethodNode, interpreter: BackwardAnalysisInt val frames = (1..insnList.size()).map { interpreter.newFrame(node.maxLocals) }.toMutableList() val insnArray = insnList.toArray() - // see Figure 9.16 from Dragon book var wereChanges: Boolean do { wereChanges = false - for (insn in insnArray) { - val index = insnList.indexOf(insn) + for (index in insnArray.indices.reversed()) { + val insn = insnArray[index] val newFrame = interpreter.newFrame(node.maxLocals) for (successorIndex in graph.getSuccessorsIndices(insn)) { newFrame.mergeFrom(frames[successorIndex])