aboutsummaryrefslogtreecommitdiff
path: root/src/tilde_backend.cpp
diff options
context:
space:
mode:
authorgingerBill <bill@gingerbill.org>2023-07-17 23:16:50 +0100
committergingerBill <bill@gingerbill.org>2023-07-17 23:16:50 +0100
commit55733171c19aa53aebbe343d7541c3c5a1597c46 (patch)
tree896b6b8f7368b9aaa3134f0908b800598a25da2f /src/tilde_backend.cpp
parent988926b59d84aced0f5c4e5bf68d82f105f5d0da (diff)
Planning for multi-valued expressions in the tilde backend
Diffstat (limited to 'src/tilde_backend.cpp')
-rw-r--r--src/tilde_backend.cpp13
1 files changed, 13 insertions, 0 deletions
diff --git a/src/tilde_backend.cpp b/src/tilde_backend.cpp
index 00e665b62..97f2dcccd 100644
--- a/src/tilde_backend.cpp
+++ b/src/tilde_backend.cpp
@@ -118,7 +118,20 @@ gb_internal cgValue cg_lvalue_addr(TB_Node *node, Type *type) {
return v;
}
+gb_internal cgValue cg_value_multi(cgValueMultiNodes *multi_nodes, Type *type) {
+ GB_ASSERT(type->kind == Type_Tuple);
+ GB_ASSERT(multi_nodes != nullptr);
+ GB_ASSERT(type->Tuple.variables.count > 1);
+ GB_ASSERT(multi_nodes->nodes.count == type->Tuple.variables.count);
+ cgValue v = {};
+ v.kind = cgValue_Multi;
+ v.type = type;
+ v.multi_nodes = multi_nodes;
+ return v;
+}
+
gb_internal cgAddr cg_addr(cgValue const &value) {
+ GB_ASSERT(value.kind != cgValue_Multi);
cgAddr addr = {};
addr.kind = cgAddr_Default;
addr.addr = value;