From 551ca2e6b78979b8e190edb6715288fc2145d9af Mon Sep 17 00:00:00 2001 From: Rafael Espindola Date: Wed, 7 Mar 2018 23:18:06 +0000 Subject: [PATCH] Set dso_local on tls init functions. 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 | 4 +++- test/CodeGenCXX/runtime-dllstorage.cpp | 1 + 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/lib/CodeGen/ItaniumCXXABI.cpp b/lib/CodeGen/ItaniumCXXABI.cpp index cb0af7bfde..0f0956deb9 100644 --- a/lib/CodeGen/ItaniumCXXABI.cpp +++ b/lib/CodeGen/ItaniumCXXABI.cpp @@ -2398,8 +2398,10 @@ void ItaniumCXXABI::EmitThreadLocalInitFuncs( CGM.SetLLVMFunctionAttributes(nullptr, FI, cast(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/test/CodeGenCXX/runtime-dllstorage.cpp b/test/CodeGenCXX/runtime-dllstorage.cpp index 4fcc90308d..0fb1e1d2b6 100644 --- a/test/CodeGenCXX/runtime-dllstorage.cpp +++ b/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*) -- 2.40.0