[llvm-branch-commits] [cfe-branch] r351533 - Merging r351457:

Hans Wennborg via llvm-branch-commits llvm-branch-commits at lists.llvm.org
Fri Jan 18 01:32:52 PST 2019


Author: hans
Date: Fri Jan 18 01:32:52 2019
New Revision: 351533

URL: http://llvm.org/viewvc/llvm-project?rev=351533&view=rev
Log:
Merging r351457:
------------------------------------------------------------------------
r351457 | vlad.tsyrklevich | 2019-01-17 18:53:45 +0100 (Thu, 17 Jan 2019) | 15 lines

TLS: Respect visibility for thread_local variables on Darwin (PR40327)

Summary:
Teach clang to mark thread wrappers for thread_local variables with
hidden visibility when the original variable is marked with hidden
visibility. This is necessary on Darwin which exposes the thread wrapper
instead of the thread variable. The thread wrapper would previously
always be created with default visibility unless it had
linkonce*/weak_odr linkage.

Reviewers: rjmccall

Reviewed By: rjmccall

Differential Revision: https://reviews.llvm.org/D56818
------------------------------------------------------------------------

Added:
    cfe/branches/release_80/test/CodeGenCXX/cxx11-thread-local-visibility.cpp
      - copied unchanged from r351457, cfe/trunk/test/CodeGenCXX/cxx11-thread-local-visibility.cpp
Modified:
    cfe/branches/release_80/   (props changed)
    cfe/branches/release_80/lib/CodeGen/ItaniumCXXABI.cpp
    cfe/branches/release_80/test/CodeGenCXX/cxx11-thread-local.cpp

Propchange: cfe/branches/release_80/
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Fri Jan 18 01:32:52 2019
@@ -1,4 +1,4 @@
 /cfe/branches/type-system-rewrite:134693-134817
-/cfe/trunk:351334,351340,351344,351360
+/cfe/trunk:351334,351340,351344,351360,351457
 /cfe/trunk/test:170344
 /cfe/trunk/test/SemaTemplate:126920

Modified: cfe/branches/release_80/lib/CodeGen/ItaniumCXXABI.cpp
URL: http://llvm.org/viewvc/llvm-project/cfe/branches/release_80/lib/CodeGen/ItaniumCXXABI.cpp?rev=351533&r1=351532&r2=351533&view=diff
==============================================================================
--- cfe/branches/release_80/lib/CodeGen/ItaniumCXXABI.cpp (original)
+++ cfe/branches/release_80/lib/CodeGen/ItaniumCXXABI.cpp Fri Jan 18 01:32:52 2019
@@ -2463,10 +2463,12 @@ ItaniumCXXABI::getOrCreateThreadLocalWra
     CGM.SetLLVMFunctionAttributesForDefinition(nullptr, Wrapper);
 
   // Always resolve references to the wrapper at link time.
-  if (!Wrapper->hasLocalLinkage() && !(isThreadWrapperReplaceable(VD, CGM) &&
-      !llvm::GlobalVariable::isLinkOnceLinkage(Wrapper->getLinkage()) &&
-      !llvm::GlobalVariable::isWeakODRLinkage(Wrapper->getLinkage())))
-    Wrapper->setVisibility(llvm::GlobalValue::HiddenVisibility);
+  if (!Wrapper->hasLocalLinkage())
+    if (!isThreadWrapperReplaceable(VD, CGM) ||
+        llvm::GlobalVariable::isLinkOnceLinkage(Wrapper->getLinkage()) ||
+        llvm::GlobalVariable::isWeakODRLinkage(Wrapper->getLinkage()) ||
+        VD->getVisibility() == HiddenVisibility)
+      Wrapper->setVisibility(llvm::GlobalValue::HiddenVisibility);
 
   if (isThreadWrapperReplaceable(VD, CGM)) {
     Wrapper->setCallingConv(llvm::CallingConv::CXX_FAST_TLS);

Modified: cfe/branches/release_80/test/CodeGenCXX/cxx11-thread-local.cpp
URL: http://llvm.org/viewvc/llvm-project/cfe/branches/release_80/test/CodeGenCXX/cxx11-thread-local.cpp?rev=351533&r1=351532&r2=351533&view=diff
==============================================================================
--- cfe/branches/release_80/test/CodeGenCXX/cxx11-thread-local.cpp (original)
+++ cfe/branches/release_80/test/CodeGenCXX/cxx11-thread-local.cpp Fri Jan 18 01:32:52 2019
@@ -318,7 +318,7 @@ void set_anon_i() {
 // CHECK-NOT: call void @[[V_M_INIT]]()
 
 
-// LIUNX: define weak_odr hidden i32* @_ZTW1a() {
+// LINUX: define weak_odr hidden i32* @_ZTW1a()
 // DARWIN: define cxx_fast_tlscc i32* @_ZTW1a()
 // LINUX:   call void @_ZTH1a()
 // DARWIN: call cxx_fast_tlscc void @_ZTH1a()




More information about the llvm-branch-commits mailing list