diff options
-rw-r--r-- | lib/CodeGen/CGVtable.cpp | 2 | ||||
-rw-r--r-- | 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 |