[K/N] Add LlvmIrHolder adapter interface for debugging purposes
Similar to KotlinBackendIrHolder and BackendContextHolder interfaces.
This commit is contained in:
committed by
Space Team
parent
60ff50dc51
commit
0febffedbd
+5
-1
@@ -8,6 +8,7 @@ package org.jetbrains.kotlin.backend.konan
|
||||
import llvm.*
|
||||
import org.jetbrains.kotlin.backend.konan.driver.BasicPhaseContext
|
||||
import org.jetbrains.kotlin.backend.konan.driver.utilities.BackendContextHolder
|
||||
import org.jetbrains.kotlin.backend.konan.driver.utilities.LlvmIrHolder
|
||||
import org.jetbrains.kotlin.backend.konan.llvm.*
|
||||
import org.jetbrains.kotlin.backend.konan.llvm.coverage.CoverageManager
|
||||
import org.jetbrains.kotlin.backend.konan.objcexport.ObjCExport
|
||||
@@ -44,7 +45,7 @@ internal class NativeGenerationState(
|
||||
// It will reduce code coupling and make it easier to create NativeGenerationState instances.
|
||||
val context: Context,
|
||||
val cacheDeserializationStrategy: CacheDeserializationStrategy?
|
||||
) : BasicPhaseContext(config), BackendContextHolder<Context> {
|
||||
) : BasicPhaseContext(config), BackendContextHolder<Context>, LlvmIrHolder {
|
||||
private val outputPath = config.cacheSupport.tryGetImplicitOutput(cacheDeserializationStrategy) ?: config.outputPath
|
||||
val outputFiles = OutputFiles(outputPath, config.target, config.produce)
|
||||
val tempFiles = run {
|
||||
@@ -127,4 +128,7 @@ internal class NativeGenerationState(
|
||||
|
||||
override val backendContext: Context
|
||||
get() = context
|
||||
|
||||
override val llvmModule: LLVMModuleRef
|
||||
get() = llvm.module
|
||||
}
|
||||
+3
-2
@@ -16,6 +16,7 @@ import org.jetbrains.kotlin.backend.konan.checkLlvmModuleExternalCalls
|
||||
import org.jetbrains.kotlin.backend.konan.createLTOFinalPipelineConfig
|
||||
import org.jetbrains.kotlin.backend.konan.driver.PhaseContext
|
||||
import org.jetbrains.kotlin.backend.konan.driver.PhaseEngine
|
||||
import org.jetbrains.kotlin.backend.konan.driver.utilities.LlvmIrHolder
|
||||
import org.jetbrains.kotlin.backend.konan.insertAliasToEntryPoint
|
||||
import org.jetbrains.kotlin.backend.konan.llvm.coverage.runCoveragePass
|
||||
import org.jetbrains.kotlin.backend.konan.llvm.verifyModule
|
||||
@@ -31,9 +32,9 @@ private val nativeLLVMDumper =
|
||||
private val llvmPhaseActions: Set<Action<Unit, NativeGenerationState>> = setOf(nativeLLVMDumper)
|
||||
|
||||
internal data class WriteBitcodeFileInput(
|
||||
val llvmModule: LLVMModuleRef,
|
||||
override val llvmModule: LLVMModuleRef,
|
||||
val outputFile: File,
|
||||
)
|
||||
) : LlvmIrHolder
|
||||
|
||||
/**
|
||||
* Write in-memory LLVM module to filesystem as a bitcode.
|
||||
|
||||
+17
@@ -0,0 +1,17 @@
|
||||
/*
|
||||
* Copyright 2010-2023 JetBrains s.r.o. and Kotlin Programming Language contributors.
|
||||
* Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.
|
||||
*/
|
||||
|
||||
package org.jetbrains.kotlin.backend.konan.driver.utilities
|
||||
|
||||
import llvm.LLVMModuleRef
|
||||
import org.jetbrains.kotlin.backend.konan.driver.PhaseContext
|
||||
|
||||
/**
|
||||
* Implementation of this interface in phase context, input or output
|
||||
* enables LLVM IR validation and dumping
|
||||
*/
|
||||
interface LlvmIrHolder {
|
||||
val llvmModule: LLVMModuleRef
|
||||
}
|
||||
Reference in New Issue
Block a user