aboutsummaryrefslogtreecommitdiff
path: root/src/llvm_backend.cpp
diff options
context:
space:
mode:
authorgingerBill <bill@gingerbill.org>2021-11-02 12:54:23 +0000
committergingerBill <bill@gingerbill.org>2021-11-02 12:54:23 +0000
commitc5cd97dd8968f5f6ad4f130a68008beacda78b64 (patch)
treec62e0b5c96d6abf116b47dceee64901b7b40d2d2 /src/llvm_backend.cpp
parenta4b68b93f2db127fde34c935e0764deaeb06a518 (diff)
Improve `wasm-import` semantics to allow procedures from different import paths
Diffstat (limited to 'src/llvm_backend.cpp')
-rw-r--r--src/llvm_backend.cpp12
1 files changed, 4 insertions, 8 deletions
diff --git a/src/llvm_backend.cpp b/src/llvm_backend.cpp
index 1d382aa6d..730b9c1ba 100644
--- a/src/llvm_backend.cpp
+++ b/src/llvm_backend.cpp
@@ -895,15 +895,9 @@ lbProcedure *lb_create_main_procedure(lbModule *m, lbProcedure *startup_runtime)
lb_end_procedure_body(p);
+ LLVMSetLinkage(p->value, LLVMExternalLinkage);
if (is_arch_wasm()) {
- LLVMSetLinkage(p->value, LLVMDLLExportLinkage);
- LLVMSetDLLStorageClass(p->value, LLVMDLLExportStorageClass);
- LLVMSetVisibility(p->value, LLVMDefaultVisibility);
-
- char const *export_name = alloc_cstring(permanent_allocator(), p->name);
- LLVMAddTargetDependentFunctionAttr(p->value, "wasm-export-name", export_name);
- } else {
- LLVMSetLinkage(p->value, LLVMExternalLinkage);
+ lb_set_wasm_export_attributes(p->value, p->name);
}
@@ -1489,6 +1483,8 @@ void lb_generate_code(lbGenerator *gen) {
LLVMSetLinkage(g.value, LLVMExternalLinkage);
LLVMSetExternallyInitialized(g.value, true);
lb_add_foreign_library_path(m, e->Variable.foreign_library);
+
+ lb_set_wasm_import_attributes(g.value, e, name);
} else {
LLVMSetInitializer(g.value, LLVMConstNull(lb_type(m, e->type)));
}