diff options
| author | gingerBill <bill@gingerbill.org> | 2023-07-17 23:16:50 +0100 |
|---|---|---|
| committer | gingerBill <bill@gingerbill.org> | 2023-07-17 23:16:50 +0100 |
| commit | 55733171c19aa53aebbe343d7541c3c5a1597c46 (patch) | |
| tree | 896b6b8f7368b9aaa3134f0908b800598a25da2f /src/tilde_backend.cpp | |
| parent | 988926b59d84aced0f5c4e5bf68d82f105f5d0da (diff) | |
Planning for multi-valued expressions in the tilde backend
Diffstat (limited to 'src/tilde_backend.cpp')
| -rw-r--r-- | src/tilde_backend.cpp | 13 |
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; |