diff --git a/rts/Task.c b/rts/Task.c index de24253db594f99fe534c8c8506fbb7068ee139b..42ec6b273b8dd2083c46110297596c768d7a03bb 100644 --- a/rts/Task.c +++ b/rts/Task.c @@ -52,7 +52,7 @@ Mutex all_tasks_mutex; // A thread-local-storage key that we can use to get access to the // current thread's Task structure. #if defined(THREADED_RTS) -# if defined(MYTASK_USE_TLV) +# if CC_SUPPORTS_TLS __thread Task *my_task; # else ThreadLocalKey currentTaskKey; @@ -75,7 +75,7 @@ initTaskManager (void) peakWorkerCount = 0; tasksInitialized = 1; #if defined(THREADED_RTS) -#if !defined(MYTASK_USE_TLV) +#if !CC_SUPPORTS_TLS newThreadLocalKey(¤tTaskKey); #endif initMutex(&all_tasks_mutex); @@ -109,7 +109,7 @@ freeTaskManager (void) #if defined(THREADED_RTS) closeMutex(&all_tasks_mutex); -#if !defined(MYTASK_USE_TLV) +#if !CC_SUPPORTS_TLS freeThreadLocalKey(¤tTaskKey); #endif #endif diff --git a/rts/Task.h b/rts/Task.h index 72dd980e68faca217dd947811ab5c832a022e6a8..6c13d706f51dafabb1434e089f443c6dbd3a742f 100644 --- a/rts/Task.h +++ b/rts/Task.h @@ -265,11 +265,7 @@ extern uint32_t peakWorkerCount; // A thread-local-storage key that we can use to get access to the // current thread's Task structure. #if defined(THREADED_RTS) -#if ((defined(linux_HOST_OS) && \ - (defined(i386_HOST_ARCH) || defined(x86_64_HOST_ARCH))) || \ - (defined(mingw32_HOST_OS) && __GNUC__ >= 4 && __GNUC_MINOR__ >= 4)) && \ - (!defined(CC_LLVM_BACKEND)) -#define MYTASK_USE_TLV +#if CC_SUPPORTS_TLS extern __thread Task *my_task; #else extern ThreadLocalKey currentTaskKey; @@ -287,7 +283,7 @@ extern Task *my_task; INLINE_HEADER Task * myTask (void) { -#if defined(THREADED_RTS) && !defined(MYTASK_USE_TLV) +#if defined(THREADED_RTS) && !CC_SUPPORTS_TLS return (Task*) getThreadLocalVar(¤tTaskKey); #else return my_task; @@ -297,7 +293,7 @@ myTask (void) INLINE_HEADER void setMyTask (Task *task) { -#if defined(THREADED_RTS) && !defined(MYTASK_USE_TLV) +#if defined(THREADED_RTS) && !CC_SUPPORTS_TLS setThreadLocalVar(¤tTaskKey,task); #else my_task = task;