aboutsummaryrefslogtreecommitdiff
path: root/src/codegen/llvm.zig
diff options
context:
space:
mode:
authorAndrew Kelley <andrew@ziglang.org>2022-08-18 10:49:09 -0700
committerAndrew Kelley <andrew@ziglang.org>2022-08-19 16:45:16 -0700
commit437311756d88984d9bf3057d9cd93986c15434fa (patch)
tree9845ed7d4ad76a191610b885061c26050bd7c349 /src/codegen/llvm.zig
parent35f62bc7aeca5c84f4ddda5736ce902018d23964 (diff)
downloadzig-437311756d88984d9bf3057d9cd93986c15434fa.tar.gz
zig-437311756d88984d9bf3057d9cd93986c15434fa.zip
LLVM: add DLL export attribute
This was present in stage1 but missing from self-hosted.
Diffstat (limited to 'src/codegen/llvm.zig')
-rw-r--r--src/codegen/llvm.zig3
1 files changed, 3 insertions, 0 deletions
diff --git a/src/codegen/llvm.zig b/src/codegen/llvm.zig
index 0898c8fe87..d50b463606 100644
--- a/src/codegen/llvm.zig
+++ b/src/codegen/llvm.zig
@@ -1103,6 +1103,7 @@ pub const Object = struct {
}
llvm_global.setUnnamedAddr(.False);
llvm_global.setLinkage(.External);
+ if (module.wantDllExports()) llvm_global.setDLLStorageClass(.Default);
if (self.di_map.get(decl)) |di_node| {
if (try decl.isFunction()) {
const di_func = @ptrCast(*llvm.DISubprogram, di_node);
@@ -1128,6 +1129,7 @@ pub const Object = struct {
const exp_name = exports[0].options.name;
llvm_global.setValueName2(exp_name.ptr, exp_name.len);
llvm_global.setUnnamedAddr(.False);
+ if (module.wantDllExports()) llvm_global.setDLLStorageClass(.DLLExport);
if (self.di_map.get(decl)) |di_node| {
if (try decl.isFunction()) {
const di_func = @ptrCast(*llvm.DISubprogram, di_node);
@@ -1187,6 +1189,7 @@ pub const Object = struct {
defer module.gpa.free(fqn);
llvm_global.setValueName2(fqn.ptr, fqn.len);
llvm_global.setLinkage(.Internal);
+ if (module.wantDllExports()) llvm_global.setDLLStorageClass(.Default);
llvm_global.setUnnamedAddr(.True);
if (decl.val.castTag(.variable)) |variable| {
const single_threaded = module.comp.bin_file.options.single_threaded;