From 0fe006157e6e6f07722bcf4eb7c51a8db07d008c Mon Sep 17 00:00:00 2001 From: gingerBill Date: Tue, 27 Sep 2022 00:18:19 +0100 Subject: Remove extra pointer indirection --- src/llvm_backend_general.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'src') diff --git a/src/llvm_backend_general.cpp b/src/llvm_backend_general.cpp index ed77eb975..0dabee076 100644 --- a/src/llvm_backend_general.cpp +++ b/src/llvm_backend_general.cpp @@ -1536,7 +1536,8 @@ LLVMTypeRef lb_type_internal_for_procedures_raw(lbModule *m, Type *type) { bool param_is_by_ptr = false; LLVMTypeRef param_type = nullptr; if (e->flags & EntityFlag_ByPtr) { - param_type = lb_type(m, alloc_type_pointer(e_type)); + // it will become a pointer afterwards by making it indirect + param_type = lb_type(m, e_type); param_is_by_ptr = true; } else if (is_type_boolean(e_type) && type_size_of(e_type) <= 1) { @@ -1578,7 +1579,6 @@ LLVMTypeRef lb_type_internal_for_procedures_raw(lbModule *m, Type *type) { for_array(j, ft->args) { if (params_by_ptr[j]) { // NOTE(bill): The parameter needs to be passed "indirectly", override it - GB_ASSERT(ft->args[j].kind == lbArg_Direct); ft->args[j].kind = lbArg_Indirect; } } -- cgit v1.2.3