From 6df6aef62176328c3b0fafa43fd611d4e25ef35c Mon Sep 17 00:00:00 2001
From: Cinder <cinder@sdf.org>
Date: Wed, 19 Nov 2014 22:27:36 -0700
Subject: [PATCH] OPEN-282 - Define LL_THREAD_LOCAL for our platforms in order
 to unify TLS support

---
 indra/llcommon/llpreprocessor.h       |  5 +++++
 indra/llcommon/llthread.cpp           |  6 +-----
 indra/llcommon/llthreadlocalstorage.h | 14 ++------------
 3 files changed, 8 insertions(+), 17 deletions(-)

diff --git a/indra/llcommon/llpreprocessor.h b/indra/llcommon/llpreprocessor.h
index 309165da7f4..2c4bcc91f6e 100755
--- a/indra/llcommon/llpreprocessor.h
+++ b/indra/llcommon/llpreprocessor.h
@@ -101,6 +101,11 @@
 
 #endif
 
+#if LL_WINDOWS
+# define LL_THREAD_LOCAL __declspec(thread)
+#else
+# define LL_THREAD_LOCAL __thread
+#endif
 
 // Static linking with apr on windows needs to be declared.
 #if LL_WINDOWS && !LL_COMMON_LINK_SHARED
diff --git a/indra/llcommon/llthread.cpp b/indra/llcommon/llthread.cpp
index 22e8179b6cc..c3f235c6ee3 100755
--- a/indra/llcommon/llthread.cpp
+++ b/indra/llcommon/llthread.cpp
@@ -92,11 +92,7 @@ void set_thread_name( DWORD dwThreadID, const char* threadName)
 // 
 //----------------------------------------------------------------------------
 
-#if LL_WINDOWS
-U32 __declspec(thread) sThreadID = 0;
-#else
-U32 __thread sThreadID = 0;
-#endif 
+U32 LL_THREAD_LOCAL sThreadID = 0;
 
 U32 LLThread::sIDIter = 0;
 
diff --git a/indra/llcommon/llthreadlocalstorage.h b/indra/llcommon/llthreadlocalstorage.h
index da648902aa2..3b5786023f4 100644
--- a/indra/llcommon/llthreadlocalstorage.h
+++ b/indra/llcommon/llthreadlocalstorage.h
@@ -139,20 +139,10 @@ class LLThreadLocalSingletonPointer
 	}
 
 private:
-
-#if LL_WINDOWS
-	static __declspec(thread) DERIVED_TYPE* sInstance;
-#else
-	static __thread DERIVED_TYPE* sInstance;
-#endif
+	static LL_THREAD_LOCAL DERIVED_TYPE* sInstance;
 };
 
-#if LL_WINDOWS
-template<typename DERIVED_TYPE>
-__declspec(thread) DERIVED_TYPE* LLThreadLocalSingletonPointer<DERIVED_TYPE>::sInstance = NULL;
-#else
 template<typename DERIVED_TYPE>
-__thread DERIVED_TYPE* LLThreadLocalSingletonPointer<DERIVED_TYPE>::sInstance = NULL;
-#endif
+LL_THREAD_LOCAL DERIVED_TYPE* LLThreadLocalSingletonPointer<DERIVED_TYPE>::sInstance = NULL;
 
 #endif // LL_LLTHREADLOCALSTORAGE_H
-- 
GitLab