From 402a165b60dc9de1ef047b44e47c2d38e5cbed6d Mon Sep 17 00:00:00 2001 From: gingerBill Date: Thu, 12 Jan 2023 16:59:16 +0000 Subject: Correct missing procedures in other build modules which cause a linkage problem --- src/llvm_backend_general.cpp | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) (limited to 'src/llvm_backend_general.cpp') diff --git a/src/llvm_backend_general.cpp b/src/llvm_backend_general.cpp index dca8c829d..cae3ab1ee 100644 --- a/src/llvm_backend_general.cpp +++ b/src/llvm_backend_general.cpp @@ -2598,7 +2598,15 @@ gb_internal lbValue lb_find_procedure_value_from_entity(lbModule *m, Entity *e) ignore_body = other_module != m; lbProcedure *missing_proc = lb_create_procedure(m, e, ignore_body); - if (!ignore_body) { + if (ignore_body) { + mutex_lock(&other_module->values_mutex); + auto *found = map_get(&other_module->values, e); + if (found == nullptr) { + lbProcedure *missing_proc_in_other_module = lb_create_procedure(other_module, e, false); + array_add(&other_module->missing_procedures_to_check, missing_proc_in_other_module); + } + mutex_unlock(&other_module->values_mutex); + } else { array_add(&m->missing_procedures_to_check, missing_proc); } found = map_get(&m->values, e); -- cgit v1.2.3