From ba6c3c7fe0dcb6d43d00abf53e2b55460b26126a Mon Sep 17 00:00:00 2001 From: Svyatoslav Scherbina Date: Fri, 30 Apr 2021 18:50:22 +0300 Subject: [PATCH] Add workaround for KT-35001 Just suppress the warning. The accident it describes is generally harmless and totally expected. --- .../kotlin/backend/konan/llvm/linkModules.kt | 22 ++++++++++++++++--- 1 file changed, 19 insertions(+), 3 deletions(-) diff --git a/kotlin-native/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/llvm/linkModules.kt b/kotlin-native/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/llvm/linkModules.kt index 878c1d71d92..5cedce0d961 100644 --- a/kotlin-native/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/llvm/linkModules.kt +++ b/kotlin-native/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/llvm/linkModules.kt @@ -8,7 +8,23 @@ package org.jetbrains.kotlin.backend.konan.llvm import llvm.* import org.jetbrains.kotlin.backend.konan.Context -internal fun llvmLinkModules2(context: Context, dest: LLVMModuleRef, src: LLVMModuleRef): LLVMBool = - withLlvmDiagnosticHandler(DefaultLlvmDiagnosticHandler(context)) { - LLVMLinkModules2(dest, src) +internal fun llvmLinkModules2(context: Context, dest: LLVMModuleRef, src: LLVMModuleRef): LLVMBool { + val diagnosticHandler = DefaultLlvmDiagnosticHandler(context, object : DefaultLlvmDiagnosticHandler.Policy { + override fun suppressWarning(diagnostic: LlvmDiagnostic): Boolean { + if (super.suppressWarning(diagnostic)) return true + + // Workaround https://youtrack.jetbrains.com/issue/KT-35001. + // Note: SDK version mismatch is generally harmless. + // Also it is expected: LLVM bitcode can be built in different environments with different SDK versions, + // and then linked by the compiler altogether. + // Just ignore such warnings for now: + if (diagnostic.message.startsWith("linking module flags 'SDK Version': IDs have conflicting values")) return true + + return false } + }) + + return withLlvmDiagnosticHandler(diagnosticHandler) { + LLVMLinkModules2(dest, src) + } +}