From 0259ce2b4a94b7d1b28a084b76650cbf448e3eb8 Mon Sep 17 00:00:00 2001 From: Eli Friedman Date: Tue, 8 Dec 2009 04:09:14 +0000 Subject: [PATCH] Slight tweak to vtable linkage. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@90832 91177308-0d34-0410-b5e6-96231b3b80d8 --- lib/CodeGen/CGVtable.cpp | 2 +- test/CodeGenCXX/key-function-vtable.cpp | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/lib/CodeGen/CGVtable.cpp b/lib/CodeGen/CGVtable.cpp index 7efa88b8e1..ef680d927d 100644 --- a/lib/CodeGen/CGVtable.cpp +++ b/lib/CodeGen/CGVtable.cpp @@ -1462,7 +1462,7 @@ void CGVtableInfo::MaybeEmitVtable(GlobalDecl GD) { llvm::GlobalVariable::LinkageTypes Linkage; if (RD->isInAnonymousNamespace()) Linkage = llvm::GlobalVariable::InternalLinkage; - else if (KeyFunction) + else if (KeyFunction && !MD->isInlined()) Linkage = llvm::GlobalVariable::ExternalLinkage; else Linkage = llvm::GlobalVariable::WeakODRLinkage; diff --git a/test/CodeGenCXX/key-function-vtable.cpp b/test/CodeGenCXX/key-function-vtable.cpp index ac88067a78..e61f33a4cf 100644 --- a/test/CodeGenCXX/key-function-vtable.cpp +++ b/test/CodeGenCXX/key-function-vtable.cpp @@ -35,7 +35,7 @@ testg *testgvar = new testg; // FIXME: The checks are extremely difficult to get right when the globals // aren't alphabetized // CHECK: @_ZTV5testa = constant [3 x i8*] [i8* null -// CHECK: @_ZTV5testc = constant [3 x i8*] [i8* null +// CHECK: @_ZTV5testc = weak_odr constant [3 x i8*] [i8* null // CHECK: @_ZTVN12_GLOBAL__N_15testgE = internal constant [3 x i8*] [i8* null // CHECK: @_ZTV5teste = weak_odr constant [3 x i8*] [i8* null // CHECK: @_ZTV5testb = weak_odr constant [3 x i8*] [i8* null -- 2.50.1