Merge pull request #2281 from rtfeldman/i/2149

(llvm) Generate code for tag unions less than 64 bits in size correctly
This commit is contained in:
Folkert de Vries 2021-12-27 22:38:08 +01:00 committed by GitHub
commit 249878cbd9
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
7 changed files with 69 additions and 50 deletions

View file

@ -830,7 +830,9 @@ impl<'a> WasmBackend<'a> {
// Store the tag ID (if any)
if stores_tag_id_as_data {
let id_offset = data_offset + data_size - data_alignment;
let id_align = Align::from(data_alignment);
let id_align = union_layout.tag_id_builtin().alignment_bytes(PTR_SIZE);
let id_align = Align::from(id_align);
self.code_builder.get_local(local_id);
@ -912,7 +914,9 @@ impl<'a> WasmBackend<'a> {
if union_layout.stores_tag_id_as_data(PTR_SIZE) {
let (data_size, data_alignment) = union_layout.data_size_and_alignment(PTR_SIZE);
let id_offset = data_size - data_alignment;
let id_align = Align::from(data_alignment);
let id_align = union_layout.tag_id_builtin().alignment_bytes(PTR_SIZE);
let id_align = Align::from(id_align);
self.storage
.load_symbols(&mut self.code_builder, &[structure]);