From: Russell Gallop Date: Wed, 8 Jan 2020 14:48:21 +0000 (+0000) Subject: [Support] Replace Windows __declspec(thread) with thread_local for LLVM_THREAD_LOCAL X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=884a65af5ceebce76519749ed6eb9a86d0596771;p=platform%2Fupstream%2Fllvm.git [Support] Replace Windows __declspec(thread) with thread_local for LLVM_THREAD_LOCAL Windows minimum host tools version is now VS2017, which supports C++11 thread_local so use this for LLVM_THREAD_LOCAL instead of declspec(thread). According to [1], thread_local is implemented with declspec(thread) so this should be NFC. [1] https://docs.microsoft.com/en-us/cpp/cpp/thread?view=vs-2017 Differential Revision: https://reviews.llvm.org/D72399 --- diff --git a/llvm/include/llvm/Support/Compiler.h b/llvm/include/llvm/Support/Compiler.h index 913353c..6f6f65c 100644 --- a/llvm/include/llvm/Support/Compiler.h +++ b/llvm/include/llvm/Support/Compiler.h @@ -512,19 +512,15 @@ void AnnotateIgnoreWritesEnd(const char *file, int line); /// extern globals, and static globals. /// /// This is essentially an extremely restricted analog to C++11's thread_local -/// support, and uses that when available. However, it falls back on -/// platform-specific or vendor-provided extensions when necessary. These -/// extensions don't support many of the C++11 thread_local's features. You -/// should only use this for PODs that you can statically initialize to -/// some constant value. In almost all circumstances this is most appropriate -/// for use with a pointer, integer, or small aggregation of pointers and -/// integers. +/// support. It uses thread_local if available, falling back on gcc __thread +/// if not. __thread doesn't support many of the C++11 thread_local's +/// features. You should only use this for PODs that you can statically +/// initialize to some constant value. In almost all circumstances this is most +/// appropriate for use with a pointer, integer, or small aggregation of +/// pointers and integers. #if LLVM_ENABLE_THREADS -#if __has_feature(cxx_thread_local) +#if __has_feature(cxx_thread_local) || defined(_MSC_VER) #define LLVM_THREAD_LOCAL thread_local -#elif defined(_MSC_VER) -// MSVC supports this with a __declspec. -#define LLVM_THREAD_LOCAL __declspec(thread) #else // Clang, GCC, and other compatible compilers used __thread prior to C++11 and // we only need the restricted functionality that provides.