diff --git a/backend.native/cli.bc/src/org/jetbrains/kotlin/cli/bc/K2Native.kt b/backend.native/cli.bc/src/org/jetbrains/kotlin/cli/bc/K2Native.kt index ec682e03bdf..2e50855b351 100644 --- a/backend.native/cli.bc/src/org/jetbrains/kotlin/cli/bc/K2Native.kt +++ b/backend.native/cli.bc/src/org/jetbrains/kotlin/cli/bc/K2Native.kt @@ -249,6 +249,7 @@ class K2Native : CLICompiler() { parseShortModuleName(arguments, configuration, outputKind)?.let { put(SHORT_MODULE_NAME, it) } + put(DISABLE_FAKE_OVERRIDE_VALIDATOR, arguments.disableFakeOverrideValidator) } } } diff --git a/backend.native/cli.bc/src/org/jetbrains/kotlin/cli/bc/K2NativeCompilerArguments.kt b/backend.native/cli.bc/src/org/jetbrains/kotlin/cli/bc/K2NativeCompilerArguments.kt index ae28e68cb7f..c68dc358cc9 100644 --- a/backend.native/cli.bc/src/org/jetbrains/kotlin/cli/bc/K2NativeCompilerArguments.kt +++ b/backend.native/cli.bc/src/org/jetbrains/kotlin/cli/bc/K2NativeCompilerArguments.kt @@ -145,6 +145,9 @@ class K2NativeCompilerArguments : CommonCompilerArguments() { ) var exportedLibraries: Array? = null + @Argument(value="-Xdisable-fake-override-validator", description = "Disable IR fake override validator") + var disableFakeOverrideValidator: Boolean = false + @Argument( value = "-Xframework-import-header", valueDescription = "
", diff --git a/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/KonanConfigurationKeys.kt b/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/KonanConfigurationKeys.kt index 3e4634e088d..39f7f24c918 100644 --- a/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/KonanConfigurationKeys.kt +++ b/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/KonanConfigurationKeys.kt @@ -18,6 +18,8 @@ class KonanConfigKeys { = CompilerConfigurationKey.create("compatible compiler versions") val DEBUG: CompilerConfigurationKey = CompilerConfigurationKey.create("add debug information") + val DISABLE_FAKE_OVERRIDE_VALIDATOR: CompilerConfigurationKey + = CompilerConfigurationKey.create("disable fake override validator") val DISABLED_PHASES: CompilerConfigurationKey> = CompilerConfigurationKey.create("disable backend phases") val BITCODE_EMBEDDING_MODE: CompilerConfigurationKey diff --git a/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/ToplevelPhases.kt b/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/ToplevelPhases.kt index 5fa773f97af..041747eebda 100644 --- a/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/ToplevelPhases.kt +++ b/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/ToplevelPhases.kt @@ -254,8 +254,10 @@ internal val psiToIrPhase = konanUnitPhase( symbolTable.noUnboundLeft("Unbound symbols left after linker") module.acceptVoid(ManglerChecker(KonanManglerIr, Ir2DescriptorManglerAdapter(KonanManglerDesc))) - val fakeOverrideChecker = FakeOverrideChecker(KonanManglerIr, KonanManglerDesc) - linker.modules.values.forEach{ fakeOverrideChecker.check(it) } + if (!config.configuration.getBoolean(KonanConfigKeys.DISABLE_FAKE_OVERRIDE_VALIDATOR)) { + val fakeOverrideChecker = FakeOverrideChecker(KonanManglerIr, KonanManglerDesc) + linker.modules.values.forEach { fakeOverrideChecker.check(it) } + } irModule = module