wasm2c: Fix WASM_RT_THREAD_LOCAL to check for __thread and add an error path #2488
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
wasm2c's thread_local needs two fixes
WASM_RT_THREAD_LOCAL
should use__thread
compiler intrinsic where possible (gcc, clang, icc) to avoid making C11 a hard dependency to compile the wasm2c runtime.WASM_RT_THREAD_LOCAL
fallback when there is no thread_local implementation either from compiler intrinsics or C11 is to#define WASM_RT_THREAD_LOCAL
, i.e., leave it empty. This is pretty unsafe, as this fallback would mean wasm2c generated code would have race conditions if two instances are run in separate threads. This PR adds an extra macro (WASM_RT_ASSUME_SINGLE_THREADED_APP
) for users to declare their app is single threaded, at which point this fallback is allowed.