diff --git a/compiler/ir/backend.jvm/src/org/jetbrains/kotlin/backend/jvm/codegen/ExpressionCodegen.kt b/compiler/ir/backend.jvm/src/org/jetbrains/kotlin/backend/jvm/codegen/ExpressionCodegen.kt index 3faaee5be00..63cef475854 100644 --- a/compiler/ir/backend.jvm/src/org/jetbrains/kotlin/backend/jvm/codegen/ExpressionCodegen.kt +++ b/compiler/ir/backend.jvm/src/org/jetbrains/kotlin/backend/jvm/codegen/ExpressionCodegen.kt @@ -461,7 +461,18 @@ class ExpressionCodegen( } override fun visitDoWhileLoop(loop: IrDoWhileLoop, data: BlockInfo): StackValue { - return super.visitDoWhileLoop(loop, data) + val entry = Label() + mv.visitLabel(entry) + + loop.body?.apply { + gen(this, data) + } + + val condition = loop.condition + gen(condition, data) + BranchedValue.condJump(StackValue.onStack(condition.asmType), entry, false, mv) + + return loop.onStack } override fun visitThrow(expression: IrThrow, data: BlockInfo): StackValue {