diff options
| author | kcbanner <kcbanner@gmail.com> | 2024-10-20 16:30:12 -0400 |
|---|---|---|
| committer | kcbanner <kcbanner@gmail.com> | 2024-10-22 12:41:35 -0400 |
| commit | a4690ecb1fc8a9ac5f7dfccfdf9f67c7a74e1569 (patch) | |
| tree | c957ba83ecc602392fc4275a53ef9b958b5dbdf1 /src/codegen/llvm.zig | |
| parent | ee2575724597f214f8f4653f4a4ec1d2a6d97b8b (diff) | |
| download | zig-a4690ecb1fc8a9ac5f7dfccfdf9f67c7a74e1569.tar.gz zig-a4690ecb1fc8a9ac5f7dfccfdf9f67c7a74e1569.zip | |
Cause a compilation error to occur if using @extern with is_dll_import in a comptime scope.
Add a note about thread local / dll import being the cause.
Diffstat (limited to 'src/codegen/llvm.zig')
| -rw-r--r-- | src/codegen/llvm.zig | 9 |
1 files changed, 5 insertions, 4 deletions
diff --git a/src/codegen/llvm.zig b/src/codegen/llvm.zig index a2c2f98a21..2657d2e799 100644 --- a/src/codegen/llvm.zig +++ b/src/codegen/llvm.zig @@ -3237,10 +3237,10 @@ pub const Object = struct { const ip = &zcu.intern_pool; const nav = ip.getNav(nav_index); const resolved = nav.status.resolved; - const is_extern, const is_threadlocal, const is_weak_linkage = switch (ip.indexToKey(resolved.val)) { - .variable => |variable| .{ false, variable.is_threadlocal, variable.is_weak_linkage }, - .@"extern" => |@"extern"| .{ true, @"extern".is_threadlocal, @"extern".is_weak_linkage }, - else => .{ false, false, false }, + const is_extern, const is_threadlocal, const is_weak_linkage, const is_dll_import = switch (ip.indexToKey(resolved.val)) { + .variable => |variable| .{ false, variable.is_threadlocal, variable.is_weak_linkage, false }, + .@"extern" => |@"extern"| .{ true, @"extern".is_threadlocal, @"extern".is_weak_linkage, @"extern".is_dll_import }, + else => .{ false, false, false, false }, }; const variable_index = try o.builder.addVariable( @@ -3257,6 +3257,7 @@ pub const Object = struct { if (is_threadlocal and !zcu.navFileScope(nav_index).mod.single_threaded) variable_index.setThreadLocal(.generaldynamic, &o.builder); if (is_weak_linkage) variable_index.setLinkage(.extern_weak, &o.builder); + if (is_dll_import) variable_index.setDllStorageClass(.dllimport, &o.builder); } else { variable_index.setLinkage(.internal, &o.builder); variable_index.setUnnamedAddr(.unnamed_addr, &o.builder); |
