From 370056ca5dd0bc9bd95b2d976e046ecf36208082 Mon Sep 17 00:00:00 2001 From: Chandler Carruth Date: Thu, 29 Jan 2015 23:26:37 +0000 Subject: [PATCH] [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 --- include/llvm/Support/Compiler.h | 11 ++--------- 1 file changed, 2 insertions(+), 9 deletions(-) diff --git a/include/llvm/Support/Compiler.h b/include/llvm/Support/Compiler.h index f1d30248a17..77e442b581d 100644 --- a/include/llvm/Support/Compiler.h +++ b/include/llvm/Support/Compiler.h @@ -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