aboutsummaryrefslogtreecommitdiff
path: root/src/codegen
diff options
context:
space:
mode:
authorAndrew Kelley <andrew@ziglang.org>2022-08-19 20:26:46 -0400
committerGitHub <noreply@github.com>2022-08-19 20:26:46 -0400
commite5e6eb983159df0a089e7d1c8efcea9006e253a9 (patch)
tree80611a8b7faca0d150bcb66c4d8403134a339a49 /src/codegen
parent39f43fea8d0f6aa1c69cb7c3209f57f5ce00b273 (diff)
parentb75eeae5951f2dc4ff19f795ebd856c134722375 (diff)
downloadzig-e5e6eb983159df0a089e7d1c8efcea9006e253a9.tar.gz
zig-e5e6eb983159df0a089e7d1c8efcea9006e253a9.zip
Merge pull request #12368 from ziglang/stage3-default
make self-hosted the default compiler
Diffstat (limited to 'src/codegen')
-rw-r--r--src/codegen/llvm.zig3
-rw-r--r--src/codegen/llvm/bindings.zig9
2 files changed, 12 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;
diff --git a/src/codegen/llvm/bindings.zig b/src/codegen/llvm/bindings.zig
index 9daa96eb8f..38f794cfda 100644
--- a/src/codegen/llvm/bindings.zig
+++ b/src/codegen/llvm/bindings.zig
@@ -223,6 +223,9 @@ pub const Value = opaque {
pub const setInitializer = LLVMSetInitializer;
extern fn LLVMSetInitializer(GlobalVar: *const Value, ConstantVal: *const Value) void;
+ pub const setDLLStorageClass = LLVMSetDLLStorageClass;
+ extern fn LLVMSetDLLStorageClass(Global: *const Value, Class: DLLStorageClass) void;
+
pub const addCase = LLVMAddCase;
extern fn LLVMAddCase(Switch: *const Value, OnVal: *const Value, Dest: *const BasicBlock) void;
@@ -1482,6 +1485,12 @@ pub const CallAttr = enum(c_int) {
AlwaysInline,
};
+pub const DLLStorageClass = enum(c_uint) {
+ Default,
+ DLLImport,
+ DLLExport,
+};
+
pub const address_space = struct {
pub const default: c_uint = 0;