aboutsummaryrefslogtreecommitdiff
path: root/src/llvm_backend.cpp
diff options
context:
space:
mode:
authorgingerBill <gingerBill@users.noreply.github.com>2022-02-14 11:21:21 +0000
committergingerBill <gingerBill@users.noreply.github.com>2022-02-14 11:21:21 +0000
commit7386ca9272c527800720c0dd53a9ad351345aa41 (patch)
treea50a4cb898f3de73e6b9fae52693a264949e8261 /src/llvm_backend.cpp
parentfd8b2e0b8877de145163d64e5c64508b6c9dff91 (diff)
Add new objc intrinsics: objc_(register|find)_(selector|class)
Diffstat (limited to 'src/llvm_backend.cpp')
-rw-r--r--src/llvm_backend.cpp5
1 files changed, 3 insertions, 2 deletions
diff --git a/src/llvm_backend.cpp b/src/llvm_backend.cpp
index 7941c65a3..52c46cadc 100644
--- a/src/llvm_backend.cpp
+++ b/src/llvm_backend.cpp
@@ -672,12 +672,14 @@ void lb_finalize_objc_names(lbProcedure *p) {
lb_populate_function_pass_manager(m, default_function_pass_manager, false, build_context.optimization_level);
LLVMFinalizeFunctionPassManager(default_function_pass_manager);
+
+ auto args = array_make<lbValue>(permanent_allocator(), 1);
+
LLVMSetLinkage(p->value, LLVMInternalLinkage);
lb_begin_procedure_body(p);
for_array(i, m->objc_classes.entries) {
auto const &entry = m->objc_classes.entries[i];
String name = entry.key.string;
- auto args = array_make<lbValue>(permanent_allocator(), 1);
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);
@@ -686,7 +688,6 @@ void lb_finalize_objc_names(lbProcedure *p) {
for_array(i, m->objc_selectors.entries) {
auto const &entry = m->objc_selectors.entries[i];
String name = entry.key.string;
- auto args = array_make<lbValue>(permanent_allocator(), 1);
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);