From 7ae22b7ce507dca47c3da7aa6d750a8fb557e1ad Mon Sep 17 00:00:00 2001 From: gingerBill Date: Mon, 4 Mar 2024 20:22:49 +0000 Subject: [PATCH] Update `are_types_identical` for `bit_field` --- src/types.cpp | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) diff --git a/src/types.cpp b/src/types.cpp index e4db31246..b442acd53 100644 --- a/src/types.cpp +++ b/src/types.cpp @@ -2810,6 +2810,29 @@ gb_internal bool are_types_identical_internal(Type *x, Type *y, bool check_tuple return are_types_identical(x->SimdVector.elem, y->SimdVector.elem); } break; + + case Type_BitField: + if (are_types_identical(x->BitField.backing_type, y->BitField.backing_type) && + x->BitField.fields.count == y->BitField.fields.count) { + for_array(i, x->BitField.fields) { + Entity *a = x->BitField.fields[i]; + Entity *b = y->BitField.fields[i]; + if (!are_types_identical(a->type, b->type)) { + return false; + } + if (a->token.string != b->token.string) { + return false; + } + if (x->BitField.bit_sizes[i] != y->BitField.bit_sizes[i]) { + return false; + } + if (x->BitField.bit_offsets[i] != y->BitField.bit_offsets[i]) { + return false; + } + } + return true; + } + break; } return false;