aboutsummaryrefslogtreecommitdiff
path: root/src/llvm_backend.cpp
diff options
context:
space:
mode:
authorLaytan Laats <laytanlaats@hotmail.com>2025-01-24 19:23:49 +0100
committerLaytan Laats <laytanlaats@hotmail.com>2025-01-24 19:23:49 +0100
commitb2aaf90f88aa85e8893325f78260b3723dc4fe99 (patch)
tree1025f7269e7b8b0929dee676028533ee12f2f43b /src/llvm_backend.cpp
parent3a13c598e2efb46f12121bb532f8f3616d2cf482 (diff)
fix separate modules with objc code
Diffstat (limited to 'src/llvm_backend.cpp')
-rw-r--r--src/llvm_backend.cpp12
1 files changed, 10 insertions, 2 deletions
diff --git a/src/llvm_backend.cpp b/src/llvm_backend.cpp
index 696ced0df..277d0433e 100644
--- a/src/llvm_backend.cpp
+++ b/src/llvm_backend.cpp
@@ -1147,14 +1147,22 @@ gb_internal void lb_finalize_objc_names(lbProcedure *p) {
String name = entry.key;
args[0] = lb_const_value(m, t_cstring, exact_value_string(name));
lbValue ptr = lb_emit_runtime_call(p, "objc_lookUpClass", args);
- lb_addr_store(p, entry.value, ptr);
+
+ lbValue ptr_ = lb_find_value_from_entity(m, entry.value);
+ lbAddr local_addr = lb_addr(ptr_);
+
+ lb_addr_store(p, local_addr, ptr);
}
for (auto const &entry : m->objc_selectors) {
String name = entry.key;
args[0] = lb_const_value(m, t_cstring, exact_value_string(name));
lbValue ptr = lb_emit_runtime_call(p, "sel_registerName", args);
- lb_addr_store(p, entry.value, ptr);
+
+ lbValue ptr_ = lb_find_value_from_entity(m, entry.value);
+ lbAddr local_addr = lb_addr(ptr_);
+
+ lb_addr_store(p, local_addr, ptr);
}
lb_end_procedure_body(p);