authorgravatar for andrew@ziglang.orgAndrew Kelley <andrew@ziglang.org> 2019-04-02 18:43:25-04:00
committergravatar for andrew@ziglang.orgAndrew Kelley <andrew@ziglang.org> 2019-04-02 18:43:25-04:00
log15bd4aa54fcebc9f8296be6138c7775f23082746
tree53fe8f61a8a676748c4ab4aa6458341403ea07a4
parente9dc504141a18e315fe547c54885811927608319

fix setting union body twice


1 files changed, 4 insertions(+), 3 deletions(-)

src/analyze.cpp+4-3
......@@ -6653,6 +6653,9 @@ static void resolve_llvm_types_union(CodeGen *g, ZigType *union_type, ResolveSta
66536653 if (!type_has_bits(union_field->type_entry))
66546654 continue;
66556655
6656 ZigLLVMDIType *field_di_type = get_llvm_di_type(g, union_field->type_entry);
6657 if (union_type->data.unionation.resolve_status >= wanted_resolve_status) return;
6658
66566659 uint64_t store_size_in_bits = union_field->type_entry->size_in_bits;
66576660 uint64_t abi_align_in_bits = 8*union_field->type_entry->abi_align;
66586661 AstNode *field_node = decl_node->data.container_decl.fields.at(i);
......@@ -6662,7 +6665,7 @@ static void resolve_llvm_types_union(CodeGen *g, ZigType *union_type, ResolveSta
66626665 store_size_in_bits,
66636666 abi_align_in_bits,
66646667 0,
6665 0, get_llvm_di_type(g, union_field->type_entry));
6668 0, field_di_type);
66666669
66676670 }
66686671
......@@ -6670,8 +6673,6 @@ static void resolve_llvm_types_union(CodeGen *g, ZigType *union_type, ResolveSta
66706673 assert(most_aligned_union_member != nullptr);
66716674
66726675 size_t padding_bytes = union_type->data.unionation.union_abi_size - most_aligned_union_member->abi_size;
6673 (void)get_llvm_type(g, most_aligned_union_member);
6674 if (union_type->data.unionation.resolve_status >= wanted_resolve_status) return;
66756676 if (padding_bytes > 0) {
66766677 ZigType *u8_type = get_int_type(g, false, 8);
66776678 ZigType *padding_array = get_array_type(g, u8_type, padding_bytes);