From 835ab152f3251bb0a7a214de2c9686d88ede24a9 Mon Sep 17 00:00:00 2001 From: Vasily Levchenko Date: Mon, 28 Nov 2016 17:52:57 +0300 Subject: [PATCH] CODEGEN: fix evaluateBlock() - we shouldn't ignore variable name to return --- .../jetbrains/kotlin/backend/konan/llvm/IrToBitcode.kt | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/llvm/IrToBitcode.kt b/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/llvm/IrToBitcode.kt index 6bd7d9e5936..366d9507be8 100644 --- a/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/llvm/IrToBitcode.kt +++ b/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/llvm/IrToBitcode.kt @@ -376,12 +376,12 @@ internal class CodeGeneratorVisitor(val context: Context) : IrElementVisitorVoid is IrSetField -> return evaluateSetField ( value) is IrConst<*> -> return evaluateConst ( value) is IrReturn -> return evaluateReturn ( value) - is IrBlock -> return evaluateBlock ( value) + is IrBlock -> return evaluateBlock (tmpVariableName, value) is IrExpressionBody -> return evaluateExpression (tmpVariableName, value.expression) is IrWhen -> return evaluateWhen (tmpVariableName, value) is IrThrow -> return evaluateThrow (tmpVariableName, value) is IrStringConcatenation -> return evaluateStringConcatenation(tmpVariableName, value) - is IrBlockBody -> return evaluateBlock ( value as IrStatementContainer) + is IrBlockBody -> return evaluateBlock (tmpVariableName, value as IrStatementContainer) is IrWhileLoop -> return evaluateWhileLoop ( value) null -> return null else -> { @@ -664,12 +664,12 @@ internal class CodeGeneratorVisitor(val context: Context) : IrElementVisitorVoid //-------------------------------------------------------------------------// - private fun evaluateBlock(value: IrStatementContainer): LLVMValueRef? { + private fun evaluateBlock(tmpVariableName: String, value: IrStatementContainer): LLVMValueRef? { logger.log("evaluateBlock : ${value.statements.forEach { ir2string(it) }}") value.statements.dropLast(1).forEach { evaluateExpression(codegen.newVar(), it) } - return evaluateExpression(codegen.newVar(), value.statements.lastOrNull()) + return evaluateExpression(tmpVariableName, value.statements.lastOrNull()) } //-------------------------------------------------------------------------//