-
- Downloads
Improve handling of instantiated thread_local variables in Itanium C++ ABI.
* Do not initialize these variables when initializing the rest of the thread_locals in the TU; they have unordered initialization so they can be initialized by themselves. This fixes a rejects-valid bug: we would make the per-variable initializer function internal, but put it in a comdat keyed off the variable, resulting in link errors when the comdat is selected from a different TU (as the per TU TLS init function tries to call an init function that does not exist). * On Darwin, when we decide that we're not going to emit a thread wrapper function at all, demote its linkage to External. Fixes a verifier failure on explicit instantiation of a thread_local variable on Darwin. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@291865 91177308-0d34-0410-b5e6-96231b3b80d8
Showing
- lib/CodeGen/CGDeclCXX.cpp 0 additions, 3 deletionslib/CodeGen/CGDeclCXX.cpp
- lib/CodeGen/ItaniumCXXABI.cpp 31 additions, 11 deletionslib/CodeGen/ItaniumCXXABI.cpp
- test/CodeGenCXX/cxx11-thread-local.cpp 134 additions, 33 deletionstest/CodeGenCXX/cxx11-thread-local.cpp
- test/OpenMP/threadprivate_codegen.cpp 7 additions, 7 deletionstest/OpenMP/threadprivate_codegen.cpp
Loading
Please register or sign in to comment