Allow intrinsics.type_union_tag_offset with maybe-like unions

This commit is contained in:
gingerBill
2025-10-09 10:25:48 +01:00
parent 41c523faa5
commit a60058259d

View File

@@ -6742,9 +6742,13 @@ gb_internal bool check_builtin_procedure(CheckerContext *c, Operand *operand, As
// NOTE(jakubtomsu): forces calculation of variant_block_size
type_size_of(u);
// NOTE(Jeroen): A tag offset of zero is perfectly fine if all members of the union are empty structs.
// What matters is that the tag size is > 0.
GB_ASSERT(u->Union.tag_size > 0);
if (u->Union.tag_size == 0) {
GB_ASSERT(is_type_union_maybe_pointer(u));
} else {
// NOTE(Jeroen): A tag offset of zero is perfectly fine if all members of the union are empty structs.
// What matters is that the tag size is > 0.
GB_ASSERT(u->Union.tag_size > 0);
}
operand->mode = Addressing_Constant;
operand->type = t_untyped_integer;