]> granicus.if.org Git - clang/commitdiff
Set dso_local on tls init functions.
authorRafael Espindola <rafael.espindola@gmail.com>
Wed, 7 Mar 2018 23:18:06 +0000 (23:18 +0000)
committerRafael Espindola <rafael.espindola@gmail.com>
Wed, 7 Mar 2018 23:18:06 +0000 (23:18 +0000)
We copy the visibility, so copying the dso_local flag seems the
natural thing to do.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@326961 91177308-0d34-0410-b5e6-96231b3b80d8

lib/CodeGen/ItaniumCXXABI.cpp
test/CodeGenCXX/runtime-dllstorage.cpp

index cb0af7bfde35842a58ecd21d825be2bfe825d52c..0f0956deb9bdf35975199587e7d434213a505bb4 100644 (file)
@@ -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);
index 4fcc90308d216765665c47c628ed4ab53c826e6f..0fb1e1d2b60b162fa294b53e47675621e1dad149 100644 (file)
@@ -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*)