fix stack size of empty tag union

This commit is contained in:
Folkert 2022-07-23 23:10:56 +02:00
parent aa08256aef
commit c09cb4e3ea
No known key found for this signature in database
GPG key ID: 1F17F6FFD112B97C
5 changed files with 112 additions and 85 deletions

View file

@ -594,16 +594,16 @@ impl<
let (data_size, data_alignment) =
union_layout.data_size_and_alignment(self.target_info);
let id_offset = data_size - data_alignment;
let id_builtin = union_layout.tag_id_builtin();
let discriminant = union_layout.discriminant();
let size = id_builtin.stack_size(self.target_info);
let size = discriminant.stack_size();
self.allocation_map.insert(*sym, owned_data);
self.symbol_storage_map.insert(
*sym,
Stack(ReferencedPrimitive {
base_offset: union_offset + id_offset as i32,
size,
sign_extend: matches!(id_builtin, sign_extended_int_builtins!()),
sign_extend: false, // tag ids are always unsigned
}),
);
}