always respect threadlocal for variables with external linkage
Previously if you had, for example: extern "c" threadlocal var errno: c_int; This would turn errno into a normal variable for --single-threaded builds. However for variables with external linkage, there is an ABI to uphold. This is needed to make errno work for DragonFly BSD. See #2381.
This commit is contained in:
parent
8cda4fd73a
commit
bd9c629c4c
|
@ -6639,7 +6639,7 @@ static void validate_inline_fns(CodeGen *g) {
|
|||
}
|
||||
|
||||
static void set_global_tls(CodeGen *g, ZigVar *var, LLVMValueRef global_value) {
|
||||
if (var->is_thread_local && !g->is_single_threaded) {
|
||||
if (var->is_thread_local && (!g->is_single_threaded || var->linkage != VarLinkageInternal)) {
|
||||
LLVMSetThreadLocalMode(global_value, LLVMGeneralDynamicTLSModel);
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue
Block a user