summaryrefslogtreecommitdiffstats
path: root/clang
diff options
context:
space:
mode:
authorRafael Espindola <rafael.espindola@gmail.com>2018-03-07 23:18:06 +0000
committerRafael Espindola <rafael.espindola@gmail.com>2018-03-07 23:18:06 +0000
commitabdb3224386475aec79bbd3345c62d988e622ca7 (patch)
tree80fd9432a0094b0c12e1da646fd9d5f08955e4df /clang
parent91af2747f284098a98a9ce7738618cb771edbd77 (diff)
downloadbcm5719-llvm-abdb3224386475aec79bbd3345c62d988e622ca7.tar.gz
bcm5719-llvm-abdb3224386475aec79bbd3345c62d988e622ca7.zip
Set dso_local on tls init functions.
We copy the visibility, so copying the dso_local flag seems the natural thing to do. llvm-svn: 326961
Diffstat (limited to 'clang')
-rw-r--r--clang/lib/CodeGen/ItaniumCXXABI.cpp4
-rw-r--r--clang/test/CodeGenCXX/runtime-dllstorage.cpp1
2 files changed, 4 insertions, 1 deletions
diff --git a/clang/lib/CodeGen/ItaniumCXXABI.cpp b/clang/lib/CodeGen/ItaniumCXXABI.cpp
index cb0af7bfde3..0f0956deb9b 100644
--- a/clang/lib/CodeGen/ItaniumCXXABI.cpp
+++ b/clang/lib/CodeGen/ItaniumCXXABI.cpp
@@ -2398,8 +2398,10 @@ void ItaniumCXXABI::EmitThreadLocalInitFuncs(
CGM.SetLLVMFunctionAttributes(nullptr, FI, cast<llvm::Function>(Init));
}
- if (Init)
+ if (Init) {
Init->setVisibility(Var->getVisibility());
+ Init->setDSOLocal(Var->isDSOLocal());
+ }
llvm::LLVMContext &Context = CGM.getModule().getContext();
llvm::BasicBlock *Entry = llvm::BasicBlock::Create(Context, "", Wrapper);
diff --git a/clang/test/CodeGenCXX/runtime-dllstorage.cpp b/clang/test/CodeGenCXX/runtime-dllstorage.cpp
index 4fcc90308d2..0fb1e1d2b60 100644
--- a/clang/test/CodeGenCXX/runtime-dllstorage.cpp
+++ b/clang/test/CodeGenCXX/runtime-dllstorage.cpp
@@ -114,6 +114,7 @@ void l() {
// CHECK-MS-DAG: declare void @_Init_thread_header(i32*)
// CHECK-MS-DAG: declare void @_Init_thread_footer(i32*)
+// CHECK-IA-DAG: @_ZTH1t = dso_local alias void (), void ()* @__tls_init
// CHECK-IA-DAG: declare i32 @__gxx_personality_v0(...)
// CHECK-IA-DAG: define linkonce_odr hidden void @__clang_call_terminate(i8*)
OpenPOWER on IntegriCloud