diff options
Diffstat (limited to 'src/llvm_backend_proc.cpp')
| -rw-r--r-- | src/llvm_backend_proc.cpp | 14 |
1 files changed, 7 insertions, 7 deletions
diff --git a/src/llvm_backend_proc.cpp b/src/llvm_backend_proc.cpp index 5fd860b29..02748663b 100644 --- a/src/llvm_backend_proc.cpp +++ b/src/llvm_backend_proc.cpp @@ -776,16 +776,16 @@ gb_internal void lb_build_nested_proc(lbProcedure *p, AstProcLit *pd, Entity *e) -gb_internal Array<lbValue> lb_value_to_array(lbProcedure *p, lbValue value) { +gb_internal Array<lbValue> lb_value_to_array(lbProcedure *p, gbAllocator const &allocator, lbValue value) { Array<lbValue> array = {}; Type *t = base_type(value.type); if (t == nullptr) { // Do nothing } else if (is_type_tuple(t)) { - array = array_make<lbValue>(permanent_allocator(), 0, t->Tuple.variables.count); + array = array_make<lbValue>(allocator, 0, t->Tuple.variables.count); lb_append_tuple_values(p, &array, value); } else { - array = array_make<lbValue>(permanent_allocator(), 1); + array = array_make<lbValue>(allocator, 1); array[0] = value; } return array; @@ -1175,15 +1175,15 @@ gb_internal lbValue lb_emit_call(lbProcedure *p, lbValue value, Array<lbValue> c case DeferredProcedure_none: break; case DeferredProcedure_in: - result_as_args = in_args; + result_as_args = array_clone(heap_allocator(), in_args); break; case DeferredProcedure_out: - result_as_args = lb_value_to_array(p, result); + result_as_args = lb_value_to_array(p, heap_allocator(), result); break; case DeferredProcedure_in_out: { - auto out_args = lb_value_to_array(p, result); - array_init(&result_as_args, permanent_allocator(), in_args.count + out_args.count); + auto out_args = lb_value_to_array(p, heap_allocator(), result); + array_init(&result_as_args, heap_allocator(), in_args.count + out_args.count); array_copy(&result_as_args, in_args, 0); array_copy(&result_as_args, out_args, in_args.count); } |