added processing of the BLOCK_BODY, for Unit function IR doesn't contein RETURN:
FUN public fun bar(i: kotlin.Int): kotlin.Unit
BLOCK_BODY
for code:
fun bar(i:Int):Unit {}
This commit is contained in:
+8
@@ -2,6 +2,7 @@ package org.jetbrains.kotlin.backend.native.llvm
|
|||||||
|
|
||||||
import kotlin_native.interop.*
|
import kotlin_native.interop.*
|
||||||
import llvm.*
|
import llvm.*
|
||||||
|
import org.jetbrains.kotlin.builtins.KotlinBuiltIns
|
||||||
import org.jetbrains.kotlin.descriptors.*
|
import org.jetbrains.kotlin.descriptors.*
|
||||||
import org.jetbrains.kotlin.descriptors.impl.LazyClassReceiverParameterDescriptor
|
import org.jetbrains.kotlin.descriptors.impl.LazyClassReceiverParameterDescriptor
|
||||||
import org.jetbrains.kotlin.descriptors.impl.LocalVariableDescriptor
|
import org.jetbrains.kotlin.descriptors.impl.LocalVariableDescriptor
|
||||||
@@ -72,6 +73,13 @@ internal class CodeGeneratorVisitor(val context: Context) : IrElementVisitorVoid
|
|||||||
LLVMBuildRet(context.llvmBuilder, generator.load(thisValue!!, generator.tmpVariable()))
|
LLVMBuildRet(context.llvmBuilder, generator.load(thisValue!!, generator.tmpVariable()))
|
||||||
}
|
}
|
||||||
|
|
||||||
|
override fun visitBlockBody(body: IrBlockBody) {
|
||||||
|
super.visitBlockBody(body)
|
||||||
|
if (KotlinBuiltIns.isUnit(generator.currentFunction!!.returnType!!)) {
|
||||||
|
LLVMBuildRet(context.llvmBuilder, null)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
override fun visitDelegatingConstructorCall(expression: IrDelegatingConstructorCall) {
|
override fun visitDelegatingConstructorCall(expression: IrDelegatingConstructorCall) {
|
||||||
evaluateCall(generator.tmpVariable(), expression)
|
evaluateCall(generator.tmpVariable(), expression)
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user