diff options
| author | gingerBill <bill@gingerbill.org> | 2023-01-12 16:59:16 +0000 |
|---|---|---|
| committer | gingerBill <bill@gingerbill.org> | 2023-01-12 16:59:16 +0000 |
| commit | 402a165b60dc9de1ef047b44e47c2d38e5cbed6d (patch) | |
| tree | d86b969e438e395a17c7a1d3cf2d3e9a46da5fd8 /src/llvm_backend_proc.cpp | |
| parent | 34f917018980ceca73e9eaacacd44efab2a1448b (diff) | |
Correct missing procedures in other build modules which cause a linkage problem
Diffstat (limited to 'src/llvm_backend_proc.cpp')
| -rw-r--r-- | src/llvm_backend_proc.cpp | 14 |
1 files changed, 8 insertions, 6 deletions
diff --git a/src/llvm_backend_proc.cpp b/src/llvm_backend_proc.cpp index c66462bc1..fd654cec9 100644 --- a/src/llvm_backend_proc.cpp +++ b/src/llvm_backend_proc.cpp @@ -190,11 +190,6 @@ gb_internal lbProcedure *lb_create_procedure(lbModule *m, Entity *entity, bool i lb_add_attribute_to_proc(m, p->value, "cold"); } - lbValue proc_value = {p->value, p->type}; - lb_add_entity(m, entity, proc_value); - lb_add_member(m, p->name, proc_value); - lb_add_procedure_value(m, p); - if (p->is_export) { LLVMSetLinkage(p->value, LLVMDLLExportLinkage); LLVMSetDLLStorageClass(p->value, LLVMDLLExportStorageClass); @@ -202,7 +197,9 @@ gb_internal lbProcedure *lb_create_procedure(lbModule *m, Entity *entity, bool i lb_set_wasm_export_attributes(p->value, p->name); } else if (!p->is_foreign) { - if (!USE_SEPARATE_MODULES) { + if (USE_SEPARATE_MODULES) { + LLVMSetLinkage(p->value, LLVMExternalLinkage); + } else { LLVMSetLinkage(p->value, LLVMInternalLinkage); // NOTE(bill): if a procedure is defined in package runtime and uses a custom link name, @@ -316,6 +313,11 @@ gb_internal lbProcedure *lb_create_procedure(lbModule *m, Entity *entity, bool i } } + lbValue proc_value = {p->value, p->type}; + lb_add_entity(m, entity, proc_value); + lb_add_member(m, p->name, proc_value); + lb_add_procedure_value(m, p); + return p; } |