aboutsummaryrefslogtreecommitdiff
path: root/src/llvm_backend.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/llvm_backend.cpp')
-rw-r--r--src/llvm_backend.cpp10
1 files changed, 10 insertions, 0 deletions
diff --git a/src/llvm_backend.cpp b/src/llvm_backend.cpp
index 7742fb39d..22a481187 100644
--- a/src/llvm_backend.cpp
+++ b/src/llvm_backend.cpp
@@ -2553,6 +2553,8 @@ gb_internal WORKER_TASK_PROC(lb_generate_missing_procedures_to_check_worker_proc
}
gb_internal void lb_generate_missing_procedures(lbGenerator *gen, bool do_threading) {
+ isize retry_count = 0;
+retry:;
if (do_threading) {
for (auto const &entry : gen->modules) {
lbModule *m = entry.value;
@@ -2570,6 +2572,14 @@ gb_internal void lb_generate_missing_procedures(lbGenerator *gen, bool do_thread
for (auto const &entry : gen->modules) {
lbModule *m = entry.value;
+ if (m->missing_procedures_to_check.count != 0) {
+ if (retry_count > gen->modules.count) {
+ GB_ASSERT(m->missing_procedures_to_check.count == 0);
+ }
+
+ retry_count += 1;
+ goto retry;
+ }
GB_ASSERT(m->missing_procedures_to_check.count == 0);
GB_ASSERT(m->procedures_to_generate.count == 0);
}