From 1af95898e523a92f962c100db82a55a1a80632e7 Mon Sep 17 00:00:00 2001 From: Shravan Narayan Date: Tue, 15 Oct 2024 00:29:43 -0500 Subject: [PATCH] wasm2c: Cleanup TLS: check for __thread and declare TLS vars only when needed --- wasm2c/wasm-rt-impl.c | 2 ++ wasm2c/wasm-rt-impl.h | 2 ++ wasm2c/wasm-rt.h | 9 ++++++--- 3 files changed, 10 insertions(+), 3 deletions(-) diff --git a/wasm2c/wasm-rt-impl.c b/wasm2c/wasm-rt-impl.c index 456c30257b..92616351db 100644 --- a/wasm2c/wasm-rt-impl.c +++ b/wasm2c/wasm-rt-impl.c @@ -73,7 +73,9 @@ WASM_RT_THREAD_LOCAL uint32_t wasm_rt_saved_call_stack_depth; static WASM_RT_THREAD_LOCAL void* g_alt_stack = NULL; #endif +#ifndef WASM_RT_TRAP_HANDLER WASM_RT_THREAD_LOCAL wasm_rt_jmp_buf g_wasm_rt_jmp_buf; +#endif #ifdef WASM_RT_TRAP_HANDLER extern void WASM_RT_TRAP_HANDLER(wasm_rt_trap_t code); diff --git a/wasm2c/wasm-rt-impl.h b/wasm2c/wasm-rt-impl.h index aa6f46d98b..ed46b09721 100644 --- a/wasm2c/wasm-rt-impl.h +++ b/wasm2c/wasm-rt-impl.h @@ -27,8 +27,10 @@ extern "C" { #endif +#ifndef WASM_RT_TRAP_HANDLER /** A setjmp buffer used for handling traps. */ extern WASM_RT_THREAD_LOCAL wasm_rt_jmp_buf g_wasm_rt_jmp_buf; +#endif #if WASM_RT_STACK_DEPTH_COUNT /** Saved call stack depth that will be restored in case a trap occurs. */ diff --git a/wasm2c/wasm-rt.h b/wasm2c/wasm-rt.h index 3274a15d2f..c5bad6142e 100644 --- a/wasm2c/wasm-rt.h +++ b/wasm2c/wasm-rt.h @@ -79,10 +79,13 @@ extern "C" { #endif -#ifdef _MSC_VER -#define WASM_RT_THREAD_LOCAL __declspec(thread) -#elif defined(WASM_RT_C11_AVAILABLE) +#ifdef WASM_RT_C11_AVAILABLE #define WASM_RT_THREAD_LOCAL _Thread_local +#elif defined(_MSC_VER) +#define WASM_RT_THREAD_LOCAL __declspec(thread) +#elif (defined(__GNUC__) || defined(__clang__)) && !defined(__APPLE__) +// Disabled on Apple systems due to sporadic test failures. +#define WASM_RT_THREAD_LOCAL __thread #else #define WASM_RT_THREAD_LOCAL #endif