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.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);