authorgravatar for jacobly@ziglang.orgJacob Young <jacobly@ziglang.org> 2022-10-31 22:31:47-04:00
committergravatar for jacobly@ziglang.orgJacob Young <jacobly@ziglang.org> 2022-11-01 20:38:51-04:00
log91fe0b80a22b43cd56e7fb747311d50f2fcd5441
tree9fa785517c1a251315882857ccd80529c290649f
parent757db665a79d7885d1c8f83df65a25adc7af9a69

cbe: fix threadlocal


4 files changed, 4 insertions(+), 9 deletions(-)

lib/include/zig.h+1-1
......@@ -19,7 +19,7 @@
1919#endif
2020
2121#if __STDC_VERSION__ >= 201112L
22#define zig_threadlocal thread_local
22#define zig_threadlocal _Thread_local
2323#elif defined(__GNUC__)
2424#define zig_threadlocal __thread
2525#elif _MSC_VER
src/codegen/c.zig+3-6
......@@ -2236,12 +2236,6 @@ pub fn genDecl(o: *Object) !void {
22362236 const variable: *Module.Var = var_payload.data;
22372237 const is_global = o.dg.declIsGlobal(tv) or variable.is_extern;
22382238 const fwd_decl_writer = o.dg.fwd_decl.writer();
2239 if (is_global) {
2240 try fwd_decl_writer.writeAll("zig_extern_c ");
2241 }
2242 if (variable.is_threadlocal) {
2243 try fwd_decl_writer.writeAll("zig_threadlocal ");
2244 }
22452239
22462240 const decl_c_value: CValue = if (is_global) .{
22472241 .bytes = mem.span(o.dg.decl.name),
......@@ -2249,6 +2243,8 @@ pub fn genDecl(o: *Object) !void {
22492243 .decl = o.dg.decl_index,
22502244 };
22512245
2246 if (is_global) try fwd_decl_writer.writeAll("zig_extern_c ");
2247 if (variable.is_threadlocal) try fwd_decl_writer.writeAll("zig_threadlocal ");
22522248 try o.dg.renderTypeAndName(fwd_decl_writer, o.dg.decl.ty, decl_c_value, .Mut, o.dg.decl.@"align", .Complete);
22532249 try fwd_decl_writer.writeAll(";\n");
22542250
......@@ -2257,6 +2253,7 @@ pub fn genDecl(o: *Object) !void {
22572253 }
22582254
22592255 const w = o.writer();
2256 if (variable.is_threadlocal) try w.writeAll("zig_threadlocal ");
22602257 try o.dg.renderTypeAndName(w, o.dg.decl.ty, decl_c_value, .Mut, o.dg.decl.@"align", .Complete);
22612258 try w.writeAll(" = ");
22622259 if (variable.init.tag() != .unreachable_value) {
test/behavior/basic.zig-1
......@@ -725,7 +725,6 @@ test "comptime manyptr concatenation" {
725725}
726726
727727test "thread local variable" {
728 if (builtin.zig_backend == .stage2_c) return error.SkipZigTest; // TODO
729728 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO
730729 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
731730 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
test/behavior/bugs/7250.zig-1
......@@ -14,7 +14,6 @@ threadlocal var g_uart0 = nrfx_uart_t{
1414};
1515
1616test "reference a global threadlocal variable" {
17 if (builtin.zig_backend == .stage2_c) return error.SkipZigTest; // TODO
1817 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO
1918 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
2019 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO