authorgravatar for andrew@ziglang.orgAndrew Kelley <andrew@ziglang.org> 2019-04-02 19:09:25-04:00
committergravatar for andrew@ziglang.orgAndrew Kelley <andrew@ziglang.org> 2019-04-02 19:09:25-04:00
log6a7b75b73c502ecd6f34c497cc86bded02746cb2
treec721f43d0c444865b40277b4120ea0f657306d65
parent15bd4aa54fcebc9f8296be6138c7775f23082746
signature Commit is signed but in an unrecognized format.

fix LLVM assertion failures


1 files changed, 13 insertions(+), 0 deletions(-)

src/analyze.cpp+13
...@@ -6359,6 +6359,7 @@ static void resolve_llvm_types_slice(CodeGen *g, ZigType *type, ResolveStatus wa...@@ -6359,6 +6359,7 @@ static void resolve_llvm_types_slice(CodeGen *g, ZigType *type, ResolveStatus wa
6359 LLVMTypeRef element_types[2];6359 LLVMTypeRef element_types[2];
6360 element_types[slice_ptr_index] = get_llvm_type(g, ptr_type);6360 element_types[slice_ptr_index] = get_llvm_type(g, ptr_type);
6361 element_types[slice_len_index] = get_llvm_type(g, g->builtin_types.entry_usize);6361 element_types[slice_len_index] = get_llvm_type(g, g->builtin_types.entry_usize);
6362 if (type->data.structure.resolve_status >= wanted_resolve_status) return;
6362 LLVMStructSetBody(type->llvm_type, element_types, 2, false);6363 LLVMStructSetBody(type->llvm_type, element_types, 2, false);
63636364
6364 uint64_t ptr_debug_size_in_bits = ptr_type->size_in_bits;6365 uint64_t ptr_debug_size_in_bits = ptr_type->size_in_bits;
...@@ -6776,6 +6777,12 @@ static void resolve_llvm_types_union(CodeGen *g, ZigType *union_type, ResolveSta...@@ -6776,6 +6777,12 @@ static void resolve_llvm_types_union(CodeGen *g, ZigType *union_type, ResolveSta
6776static void resolve_llvm_types_pointer(CodeGen *g, ZigType *type) {6777static void resolve_llvm_types_pointer(CodeGen *g, ZigType *type) {
6777 if (type->llvm_di_type != nullptr) return;6778 if (type->llvm_di_type != nullptr) return;
67786779
6780 if (!type_has_bits(type)) {
6781 type->llvm_type = g->builtin_types.entry_void->llvm_type;
6782 type->llvm_di_type = g->builtin_types.entry_void->llvm_di_type;
6783 return;
6784 }
6785
6779 ZigType *elem_type = type->data.pointer.child_type;6786 ZigType *elem_type = type->data.pointer.child_type;
67806787
6781 if (type->data.pointer.is_const || type->data.pointer.is_volatile ||6788 if (type->data.pointer.is_const || type->data.pointer.is_volatile ||
...@@ -6811,6 +6818,12 @@ static void resolve_llvm_types_pointer(CodeGen *g, ZigType *type) {...@@ -6811,6 +6818,12 @@ static void resolve_llvm_types_pointer(CodeGen *g, ZigType *type) {
6811static void resolve_llvm_types_integer(CodeGen *g, ZigType *type) {6818static void resolve_llvm_types_integer(CodeGen *g, ZigType *type) {
6812 if (type->llvm_di_type != nullptr) return;6819 if (type->llvm_di_type != nullptr) return;
68136820
6821 if (!type_has_bits(type)) {
6822 type->llvm_type = g->builtin_types.entry_void->llvm_type;
6823 type->llvm_di_type = g->builtin_types.entry_void->llvm_di_type;
6824 return;
6825 }
6826
6814 unsigned dwarf_tag;6827 unsigned dwarf_tag;
6815 if (type->data.integral.is_signed) {6828 if (type->data.integral.is_signed) {
6816 if (type->size_in_bits == 8) {6829 if (type->size_in_bits == 8) {