From f4529298e422509aa9a497279ec99f329dce9c8c Mon Sep 17 00:00:00 2001 From: Vasily Levchenko Date: Sat, 26 Nov 2016 12:58:05 +0300 Subject: [PATCH] CODEGEN: more logging and verification --- .../kotlin/backend/konan/llvm/IrToBitcode.kt | 13 +++++++++---- 1 file changed, 9 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 c53146bafc2..941bcb0a193 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 @@ -39,6 +39,11 @@ fun emitLLVM(module: IrModuleFragment, runtimeFile: String, outFile: String) { module.acceptVoid(RTTIGeneratorVisitor(context)) println("\n--- Generate bitcode ------------------------------------------------------\n") module.acceptVoid(CodeGeneratorVisitor(context)) + verifyModule(llvmModule) + LLVMWriteBitcodeToFile(llvmModule, outFile) +} + +private fun verifyModule(llvmModule: LLVMModuleRef) { memScoped { val errorRef = allocPointerTo() // TODO: use LLVMDisposeMessage() on errorRef, once possible in interop. @@ -48,7 +53,6 @@ fun emitLLVM(module: IrModuleFragment, runtimeFile: String, outFile: String) { throw Error("Invalid module"); } } - LLVMWriteBitcodeToFile(llvmModule, outFile) } internal class RTTIGeneratorVisitor(context: Context) : IrElementVisitorVoid { @@ -207,13 +211,13 @@ internal class CodeGeneratorVisitor(val context: Context) : IrElementVisitorVoid } codegen.ret(thisPtr) - logger.log("visitConstructor : ${ir2string(constructorDeclaration)}") + logger.log("visitConstructor : ${ir2string(constructorDeclaration)}") } //-------------------------------------------------------------------------// override fun visitAnonymousInitializer(declaration: IrAnonymousInitializer) { - logger.log("visitAnonymousInitializer : ${ir2string(declaration)}") + logger.log("visitAnonymousInitializer : ${ir2string(declaration)}") } //-------------------------------------------------------------------------// @@ -257,6 +261,7 @@ internal class CodeGeneratorVisitor(val context: Context) : IrElementVisitorVoid codegen.function(declaration) metadator.function(declaration) declaration.acceptChildrenVoid(this) + verifyModule(context.llvmModule) } //-------------------------------------------------------------------------// @@ -751,7 +756,7 @@ internal class CodeGeneratorVisitor(val context: Context) : IrElementVisitorVoid private fun evaluateOperatorCall(tmpVariableName: String, callee: IrCall, args: List): LLVMValueRef { - logger.log("evaluateCall $tmpVariableName origin:$callee") + logger.log("evaluateCall : $tmpVariableName origin:${ir2string(callee)}") val descriptor = callee.descriptor when (descriptor.name) { kEqeq -> return evaluateOperatorEqeq (callee as IrBinaryPrimitiveImpl, args[0]!!, args[1]!!, tmpVariableName)