Planning for multi-valued expressions in the tilde backend

This commit is contained in:
gingerBill
2023-07-17 23:16:50 +01:00
parent 988926b59d
commit 55733171c1
5 changed files with 45 additions and 5 deletions

View File

@@ -1,4 +1,5 @@
gb_internal cgValue cg_flatten_value(cgProcedure *p, cgValue value) {
GB_ASSERT(value.kind != cgValue_Multi);
if (value.kind == cgValue_Symbol) {
GB_ASSERT(is_type_internally_pointer_like(value.type));
value = cg_value(tb_inst_get_symbol_address(p->func, value.symbol), value.type);
@@ -152,6 +153,9 @@ gb_internal cgValue cg_emit_transmute(cgProcedure *p, cgValue value, Type *type)
case cgValue_Symbol:
GB_PANIC("should be handled above");
break;
case cgValue_Multi:
GB_PANIC("cannot transmute multiple values at once");
break;
}
return value;