[LPM] Remove a PPC64 hack to try to work around a bad interaction

between the linker's TLS optimizations and Clang's TLS code generation.

For now, Clang has been changed to disable linker TLS optimizations
until it (and LLVM more generally) are emitting TLS code sequences
compatible with the old bugs found in the linkers. That's a better fix
to handle bootstrapping on that platform.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@227511 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
Chandler Carruth 2015-01-29 23:26:37 +00:00
parent 850420cd14
commit 370056ca5d

View File

@ -391,16 +391,9 @@
#elif defined(_MSC_VER)
// MSVC supports this with a __declspec.
#define LLVM_THREAD_LOCAL __declspec(thread)
#elif defined(__clang__) && defined(__powerpc64__)
// Clang, GCC, and all compatible compilers tend to use __thread. But we need
// to work aronud a bug in the combination of Clang's compilation of
// global-dynamic and local-dynamic TLS and the ppc64 linker relocations which
// we do by forcing initial-exec. While that mode isn't strictly sufficient for
// all possible DSO use cases, it will usually work with glibc.
// FIXME: Make this conditional on the Clang version once this is fixed in
// top-of-tree.
#define LLVM_THREAD_LOCAL __thread __attribute__((tls_model("initial-exec")))
#else
// Clang, GCC, and other compatible compilers used __thread prior to C++11 and
// we only need the restricted functionality that provides.
#define LLVM_THREAD_LOCAL __thread
#endif
#else // !LLVM_ENABLE_THREADS