aboutsummaryrefslogtreecommitdiff
path: root/src/llvm_backend_proc.cpp
diff options
context:
space:
mode:
authorgingerBill <bill@gingerbill.org>2023-03-16 15:16:17 +0000
committergingerBill <bill@gingerbill.org>2023-03-16 15:16:17 +0000
commit8dc70f797cf8b4315d689ce94ab004faadb015b7 (patch)
tree5429d9d7aa8a6071761b993de0a25ff6be0c84e7 /src/llvm_backend_proc.cpp
parent2cf8a9da6f7becfe7c8d279af4cc81b02dd706b6 (diff)
Increase use of `temporary_allocator()` where possible
Diffstat (limited to 'src/llvm_backend_proc.cpp')
-rw-r--r--src/llvm_backend_proc.cpp14
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);
}