From a11be433e2ef5511fe35a90f237313406dac3dcc Mon Sep 17 00:00:00 2001 From: Sergey Bogolepov Date: Wed, 25 Jan 2023 12:33:52 +0200 Subject: [PATCH] [K/N] Get rid of predefined values in TempFiles One step closer to getting rid of this class at all. --- .../kotlin/backend/konan/driver/phases/TopLevelPhases.kt | 8 +++++--- .../konan/driver/utilities/LlvmPassesUtilities.kt | 8 ++------ .../main/kotlin/org/jetbrains/kotlin/konan/TempFiles.kt | 9 --------- 3 files changed, 7 insertions(+), 18 deletions(-) diff --git a/kotlin-native/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/driver/phases/TopLevelPhases.kt b/kotlin-native/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/driver/phases/TopLevelPhases.kt index 11eb44e2fc0..e6e44b00c03 100644 --- a/kotlin-native/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/driver/phases/TopLevelPhases.kt +++ b/kotlin-native/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/driver/phases/TopLevelPhases.kt @@ -8,6 +8,7 @@ package org.jetbrains.kotlin.backend.konan.driver.phases import org.jetbrains.kotlin.backend.konan.* import org.jetbrains.kotlin.backend.konan.driver.PhaseContext import org.jetbrains.kotlin.backend.konan.driver.PhaseEngine +import org.jetbrains.kotlin.backend.konan.llvm.getName import org.jetbrains.kotlin.cli.jvm.compiler.KotlinCoreEnvironment import org.jetbrains.kotlin.ir.declarations.IrClass import org.jetbrains.kotlin.ir.declarations.IrDeclaration @@ -137,7 +138,8 @@ internal fun PhaseEngine.compileModule(module: IrModuleFr if (context.config.produce.isCache) { runPhase(SaveAdditionalCacheInfoPhase) } - val bitcodeFile = context.tempFiles.nativeBinaryFile.javaFile() + // TODO: Currently, all llvm modules are named as "out" which might lead to collisions. + val bitcodeFile = context.tempFiles.create(context.llvm.module.getName(), ".bc").javaFile() runPhase(WriteBitcodeFilePhase, WriteBitcodeFileInput(context.llvm.module, bitcodeFile)) val dependenciesTrackingResult = DependenciesTrackingResult( context.dependenciesTracker.bitcodeToLink, @@ -175,8 +177,8 @@ internal fun PhaseEngine.runBackendCodegen(module: IrModu mergeDependencies(module, dependenciesToCompile) runCodegen(module) val generatedBitcodeFiles = if (context.config.produce.isNativeLibrary) { - val cppAdapterFile = context.tempFiles.cAdapterCpp.javaFile() - val bitcodeAdapterFile = context.tempFiles.cAdapterBitcode.javaFile() + val cppAdapterFile = context.tempFiles.create("api", ".cpp").javaFile() + val bitcodeAdapterFile = context.tempFiles.create("api", ".bc").javaFile() val input = CExportGenerateApiInput( context.context.cAdapterExportedElements!!, headerFile = context.outputFiles.cAdapterHeader.javaFile(), diff --git a/kotlin-native/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/driver/utilities/LlvmPassesUtilities.kt b/kotlin-native/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/driver/utilities/LlvmPassesUtilities.kt index 0716e108f7b..768d39a9f07 100644 --- a/kotlin-native/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/driver/utilities/LlvmPassesUtilities.kt +++ b/kotlin-native/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/driver/utilities/LlvmPassesUtilities.kt @@ -6,14 +6,13 @@ package org.jetbrains.kotlin.backend.konan.driver.utilities import kotlinx.cinterop.* -import llvm.LLVMGetModuleIdentifier import llvm.LLVMModuleRef import llvm.LLVMPrintModuleToFile -import llvm.size_tVar import org.jetbrains.kotlin.backend.common.phaser.Action import org.jetbrains.kotlin.backend.common.phaser.ActionState import org.jetbrains.kotlin.backend.konan.KonanConfigKeys import org.jetbrains.kotlin.backend.konan.driver.PhaseContext +import org.jetbrains.kotlin.backend.konan.llvm.getName import org.jetbrains.kotlin.backend.konan.llvm.verifyModule import org.jetbrains.kotlin.cli.common.messages.CompilerMessageSeverity import java.io.File @@ -39,10 +38,7 @@ private fun createLlvmDumperAction(): Action() - LLVMGetModuleIdentifier(llvmModule, sizeVar.ptr)!!.toKStringFromUtf8() - } + val moduleName: String = llvmModule.getName() val output = File(context.config.saveLlvmIrDirectory, "$moduleName.${state.phase.name}.ll") if (LLVMPrintModuleToFile(llvmModule, output.absolutePath, null) != 0) { error("Can't dump LLVM IR to ${output.absolutePath}") diff --git a/kotlin-native/shared/src/main/kotlin/org/jetbrains/kotlin/konan/TempFiles.kt b/kotlin-native/shared/src/main/kotlin/org/jetbrains/kotlin/konan/TempFiles.kt index fc78c37ee12..dbc112d9eed 100644 --- a/kotlin-native/shared/src/main/kotlin/org/jetbrains/kotlin/konan/TempFiles.kt +++ b/kotlin-native/shared/src/main/kotlin/org/jetbrains/kotlin/konan/TempFiles.kt @@ -30,17 +30,8 @@ class TempFiles(outputPath: String, pathToTemporaryDir: String? = null) { } } - private val outputName = File(outputPath).name val deleteOnExit = pathToTemporaryDir == null || pathToTemporaryDir.isEmpty() - val nativeBinaryFile by lazy { create(outputName,".kt.bc") } - val cAdapterCpp by lazy { create("api", ".cpp") } - val cAdapterBitcode by lazy { create("api", ".bc") } - - val nativeBinaryFileName get() = nativeBinaryFile.absolutePath - val cAdapterCppName get() = cAdapterCpp.absolutePath - val cAdapterBitcodeName get() = cAdapterBitcode.absolutePath - private val dir by lazy { if (deleteOnExit) { createTempDir("konan_temp")