From a60058259d9ae6bbff37fff49e53d542354c90c1 Mon Sep 17 00:00:00 2001 From: gingerBill Date: Thu, 9 Oct 2025 10:25:48 +0100 Subject: Allow `intrinsics.type_union_tag_offset` with maybe-like unions --- src/check_builtin.cpp | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) (limited to 'src/check_builtin.cpp') diff --git a/src/check_builtin.cpp b/src/check_builtin.cpp index 0f8944cb9..5d1016bba 100644 --- a/src/check_builtin.cpp +++ b/src/check_builtin.cpp @@ -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; -- cgit v1.2.3