diff options
author | Richard Smith <richard-llvm@metafoo.co.uk> | 2017-01-13 00:43:31 +0000 |
---|---|---|
committer | Richard Smith <richard-llvm@metafoo.co.uk> | 2017-01-13 00:43:31 +0000 |
commit | fbe2369f1a514423e4c25417ab3532502fde6f2a (patch) | |
tree | 3157051db800312a5d48d6210429c2319ceab0ba /llvm/lib/CodeGen/MachineFunctionPass.cpp | |
parent | 7150343fbc12648f268cdf352b2aa616a4e771fc (diff) | |
download | llvm-fbe2369f1a514423e4c25417ab3532502fde6f2a.zip llvm-fbe2369f1a514423e4c25417ab3532502fde6f2a.tar.gz llvm-fbe2369f1a514423e4c25417ab3532502fde6f2a.tar.bz2 |
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.
llvm-svn: 291865
Diffstat (limited to 'llvm/lib/CodeGen/MachineFunctionPass.cpp')
0 files changed, 0 insertions, 0 deletions