From 226a97bbf6c3457172ff356af6a89f5977e0d484 Mon Sep 17 00:00:00 2001 From: Svyatoslav Scherbina Date: Wed, 21 Mar 2018 11:09:17 +0300 Subject: [PATCH] Improve LLVM symbol name clash detection for classes --- .../kotlin/backend/konan/llvm/LlvmDeclarations.kt | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/llvm/LlvmDeclarations.kt b/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/llvm/LlvmDeclarations.kt index e2a98dc7038..edf9e29ef9e 100644 --- a/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/llvm/LlvmDeclarations.kt +++ b/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/llvm/LlvmDeclarations.kt @@ -247,7 +247,12 @@ private class DeclarationsGeneratorVisitor(override val context: Context) : typeInfoGlobal.pointer.getElementPtr(0).llvm, typeInfoSymbolName)!! - if (!descriptor.isExported()) { + if (descriptor.isExported()) { + if (llvmTypeInfoPtr.name != typeInfoSymbolName) { + // So alias name has been mangled by LLVM to avoid name clash. + throw IllegalArgumentException("Global '$typeInfoSymbolName' already exists") + } + } else { LLVMSetLinkage(llvmTypeInfoPtr, LLVMLinkage.LLVMInternalLinkage) }