aboutsummaryrefslogtreecommitdiff
path: root/src/llvm_backend.cpp
diff options
context:
space:
mode:
authorgingerBill <bill@gingerbill.org>2020-06-16 16:21:44 +0100
committergingerBill <bill@gingerbill.org>2020-06-16 16:21:44 +0100
commit781395ada1883203582adec70e5ab1a2eda316bb (patch)
tree3064a744c0b406c83c74b9d05c9c87fd392f8b8f /src/llvm_backend.cpp
parent9635ea8706e462bf5c42c8fbaf792b96137ad21a (diff)
Add `deferred_in_out` attribute
Diffstat (limited to 'src/llvm_backend.cpp')
-rw-r--r--src/llvm_backend.cpp8
1 files changed, 8 insertions, 0 deletions
diff --git a/src/llvm_backend.cpp b/src/llvm_backend.cpp
index bc3cba109..994e0f29e 100644
--- a/src/llvm_backend.cpp
+++ b/src/llvm_backend.cpp
@@ -7113,6 +7113,14 @@ lbValue lb_emit_call(lbProcedure *p, lbValue value, Array<lbValue> const &args,
case DeferredProcedure_out:
result_as_args = lb_value_to_array(p, result);
break;
+ case DeferredProcedure_in_out:
+ {
+ auto out_args = lb_value_to_array(p, 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);
+ }
+ break;
}
lb_add_defer_proc(p, p->scope_index, deferred, result_as_args);