From e0cfb39d7922cbdd8beb9195cef493ec7d669711 Mon Sep 17 00:00:00 2001 From: Christoffer Lerno Date: Sun, 28 May 2023 15:00:46 +0200 Subject: [PATCH] Add DLL export for exported functions on win32. --- src/compiler/llvm_codegen.c | 8 ++++++++ src/version.h | 2 +- 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/src/compiler/llvm_codegen.c b/src/compiler/llvm_codegen.c index 904f489bf..7e12b95d0 100644 --- a/src/compiler/llvm_codegen.c +++ b/src/compiler/llvm_codegen.c @@ -1042,6 +1042,10 @@ LLVMValueRef llvm_get_ref(GenContext *c, Decl *decl) } assert(decl->var.kind == VARDECL_GLOBAL || decl->var.kind == VARDECL_CONST); llvm_add_global_decl(c, decl); + if (decl->is_export && platform_target.os == OS_TYPE_WIN32) + { + LLVMSetDLLStorageClass(decl->backend_ref, LLVMDLLExportStorageClass); + } return decl->backend_ref; case DECL_FUNC: if (decl->func_decl.attr_interface) @@ -1057,6 +1061,10 @@ LLVMValueRef llvm_get_ref(GenContext *c, Decl *decl) } backend_ref = decl->backend_ref = LLVMAddFunction(c->module, decl_get_extname(decl), llvm_get_type(c, decl->type)); llvm_append_function_attributes(c, decl); + if (decl->is_export && platform_target.os == OS_TYPE_WIN32) + { + LLVMSetDLLStorageClass(backend_ref, LLVMDLLExportStorageClass); + } if (decl_is_local(decl)) { assert(decl->unit->module == c->code_module); diff --git a/src/version.h b/src/version.h index afd94685e..e0477057c 100644 --- a/src/version.h +++ b/src/version.h @@ -1 +1 @@ -#define COMPILER_VERSION "0.4.515" \ No newline at end of file +#define COMPILER_VERSION "0.4.516" \ No newline at end of file