diff options
author | David Majnemer <david.majnemer@gmail.com> | 2014-05-05 18:54:23 +0000 |
---|---|---|
committer | David Majnemer <david.majnemer@gmail.com> | 2014-05-05 18:54:23 +0000 |
commit | ceaaa8d09e7d3526724b3efb837b840ae90c2de7 (patch) | |
tree | af9d81699bb786325c108b457cf8c6f2bd8dc3f4 /clang/lib/CodeGen/ItaniumCXXABI.cpp | |
parent | 4aab579d0758c16b8293aa5960c0d33a38b648ae (diff) | |
download | bcm5719-llvm-ceaaa8d09e7d3526724b3efb837b840ae90c2de7.tar.gz bcm5719-llvm-ceaaa8d09e7d3526724b3efb837b840ae90c2de7.zip |
CodeGen: Assign linkage to thread-wrappers correctly
We would sometimes incorrectly give a thread-wrapper external linkage
instead of internal linkage if we had only CodeGen'd it's declaration,
not it's definition.
This fixes PR19655.
llvm-svn: 207988
Diffstat (limited to 'clang/lib/CodeGen/ItaniumCXXABI.cpp')
-rw-r--r-- | clang/lib/CodeGen/ItaniumCXXABI.cpp | 5 |
1 files changed, 3 insertions, 2 deletions
diff --git a/clang/lib/CodeGen/ItaniumCXXABI.cpp b/clang/lib/CodeGen/ItaniumCXXABI.cpp index 4b1c1c255af..d11d1728afe 100644 --- a/clang/lib/CodeGen/ItaniumCXXABI.cpp +++ b/clang/lib/CodeGen/ItaniumCXXABI.cpp @@ -1582,8 +1582,9 @@ ItaniumCXXABI::getOrCreateThreadLocalWrapper(const VarDecl *VD, llvm::FunctionType *FnTy = llvm::FunctionType::get(RetTy, false); llvm::Function *Wrapper = llvm::Function::Create( - FnTy, getThreadLocalWrapperLinkage(Var->getLinkage()), WrapperName.str(), - &CGM.getModule()); + FnTy, getThreadLocalWrapperLinkage( + CGM.getLLVMLinkageVarDefinition(VD, /*isConstant=*/false)), + WrapperName.str(), &CGM.getModule()); // Always resolve references to the wrapper at link time. Wrapper->setVisibility(llvm::GlobalValue::HiddenVisibility); return Wrapper; |