aboutsummaryrefslogtreecommitdiff
path: root/src/llvm_backend.cpp
diff options
context:
space:
mode:
authorgingerBill <gingerBill@users.noreply.github.com>2025-09-10 17:29:11 +0100
committergingerBill <gingerBill@users.noreply.github.com>2025-09-10 17:29:11 +0100
commit1e0902677f905e752b42e2f48dcda53141b78eee (patch)
tree2d8975e6c8bf08585241163ebbb67da32c33a4d6 /src/llvm_backend.cpp
parent60684ff028fe4b0df1925d23d4ff05192f45faab (diff)
Multithread min dep set by removing the set itself
Diffstat (limited to 'src/llvm_backend.cpp')
-rw-r--r--src/llvm_backend.cpp17
1 files changed, 11 insertions, 6 deletions
diff --git a/src/llvm_backend.cpp b/src/llvm_backend.cpp
index ff17e9c10..11b979774 100644
--- a/src/llvm_backend.cpp
+++ b/src/llvm_backend.cpp
@@ -2097,8 +2097,6 @@ gb_internal GB_COMPARE_PROC(llvm_global_entity_cmp) {
}
gb_internal void lb_create_global_procedures_and_types(lbGenerator *gen, CheckerInfo *info, bool do_threading) {
- auto *min_dep_set = &info->minimum_dependency_set;
-
for (Entity *e : info->entities) {
String name = e->token.string;
Scope * scope = e->scope;
@@ -2135,11 +2133,16 @@ gb_internal void lb_create_global_procedures_and_types(lbGenerator *gen, Checker
}
}
- if (!polymorphic_struct && !ptr_set_exists(min_dep_set, e)) {
+ if (!polymorphic_struct && e->min_dep_count.load(std::memory_order_relaxed) == 0) {
// NOTE(bill): Nothing depends upon it so doesn't need to be built
continue;
}
+ // if (!polymorphic_struct && !ptr_set_exists(min_dep_set, e)) {
+ // // NOTE(bill): Nothing depends upon it so doesn't need to be built
+ // continue;
+ // }
+
lbModule *m = &gen->default_module;
if (USE_SEPARATE_MODULES) {
m = lb_module_of_entity(gen, e);
@@ -2845,8 +2848,6 @@ gb_internal bool lb_generate_code(lbGenerator *gen) {
lbModule *default_module = &gen->default_module;
CheckerInfo *info = gen->info;
- auto *min_dep_set = &info->minimum_dependency_set;
-
switch (build_context.metrics.arch) {
case TargetArch_amd64:
case TargetArch_i386:
@@ -3184,10 +3185,14 @@ gb_internal bool lb_generate_code(lbGenerator *gen) {
continue;
}
- if (!ptr_set_exists(min_dep_set, e)) {
+ if (e->min_dep_count.load(std::memory_order_relaxed) == 0) {
continue;
}
+ // if (!ptr_set_exists(min_dep_set, e)) {
+ // continue;
+ // }
+
DeclInfo *decl = decl_info_of_entity(e);
if (decl == nullptr) {
continue;