From e7b5e74f7831c515a8b62c2a0182f47ca6d5d5b9 Mon Sep 17 00:00:00 2001 From: Igor Chevdar Date: Wed, 28 Sep 2022 14:34:39 +0300 Subject: [PATCH] [K/N][lower] Fixed bug with phases for metadata klibs --- .../kotlin/backend/konan/ToplevelPhases.kt | 18 +++++++++++++----- 1 file changed, 13 insertions(+), 5 deletions(-) diff --git a/kotlin-native/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/ToplevelPhases.kt b/kotlin-native/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/ToplevelPhases.kt index 44d5e414946..230427bd47f 100644 --- a/kotlin-native/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/ToplevelPhases.kt +++ b/kotlin-native/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/ToplevelPhases.kt @@ -451,15 +451,22 @@ internal val disposeGenerationStatePhase = namedUnitPhase( } ) +private val phasesOverMainModule = NamedCompilerPhase( + name = "PhasesOverMainModule", + description = "Phases over main module", + lower = takeFromContext { it.irModule!! } then + specialBackendChecksPhase then + backendCodegen then + unitSink(), + prerequisite = setOf(psiToIrPhase) +) + private val entireBackend = NamedCompilerPhase( name = "EntireBackend", description = "Entire backend", lower = createGenerationStatePhase then buildAdditionalCacheInfoPhase then - takeFromContext { it.irModule!! } then - specialBackendChecksPhase then - backendCodegen then - unitSink() then + phasesOverMainModule then saveAdditionalCacheInfoPhase then produceOutputPhase then objectFilesPhase then @@ -526,6 +533,7 @@ internal fun PhaseConfig.konanPhasesConfig(config: KonanConfig) { disableUnless(finalizeCachePhase, config.produce.isCache) disableUnless(exportInternalAbiPhase, config.produce.isCache) disableUnless(buildCExportsPhase, config.produce.isNativeLibrary) + disableUnless(functionsWithoutBoundCheck, config.involvesCodegen) disableUnless(backendCodegen, config.involvesCodegen) disableUnless(checkExternalCallsPhase, getBoolean(KonanConfigKeys.CHECK_EXTERNAL_CALLS)) disableUnless(rewriteExternalCallsCheckerGlobals, getBoolean(KonanConfigKeys.CHECK_EXTERNAL_CALLS)) @@ -566,7 +574,7 @@ internal fun PhaseConfig.konanPhasesConfig(config: KonanConfig) { if (config.metadataKlib || config.omitFrameworkBinary) { disable(psiToIrPhase) disable(copyDefaultValuesToActualPhase) - disable(specialBackendChecksPhase) + disable(phasesOverMainModule) disable(checkSamSuperTypesPhase) } }