From 58c97b3561c39036c2db1875d5a1b5125dd580ef Mon Sep 17 00:00:00 2001 From: Andrew Kelley Date: Thu, 30 Jan 2020 15:30:03 -0500 Subject: fix llvm assertion with debug info for vectors --- src/analyze.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'src/analyze.cpp') diff --git a/src/analyze.cpp b/src/analyze.cpp index 2210a17da3..8be23ad82a 100644 --- a/src/analyze.cpp +++ b/src/analyze.cpp @@ -9205,7 +9205,7 @@ static void resolve_llvm_types(CodeGen *g, ZigType *type, ResolveStatus wanted_r if (type->llvm_di_type != nullptr) return; type->llvm_type = LLVMVectorType(get_llvm_type(g, type->data.vector.elem_type), type->data.vector.len); - type->llvm_di_type = ZigLLVMDIBuilderCreateVectorType(g->dbuilder, type->size_in_bits, + type->llvm_di_type = ZigLLVMDIBuilderCreateVectorType(g->dbuilder, 8 * type->abi_size, type->abi_align, get_llvm_di_type(g, type->data.vector.elem_type), type->data.vector.len); return; } -- cgit v1.2.3 From 958f00f1c71f205ce738433d00e9da7dde060f14 Mon Sep 17 00:00:00 2001 From: LemonBoy Date: Sat, 1 Feb 2020 23:58:02 +0100 Subject: Don't generate any type info for void return types Closely matches what the LLVM debug emitter expects, the generated DWARF infos are now standard-compliant. --- src/analyze.cpp | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) (limited to 'src/analyze.cpp') diff --git a/src/analyze.cpp b/src/analyze.cpp index 8be23ad82a..c15b6b3d57 100644 --- a/src/analyze.cpp +++ b/src/analyze.cpp @@ -8846,13 +8846,13 @@ static void resolve_llvm_types_fn_type(CodeGen *g, ZigType *fn_type) { ZigType *gen_return_type; if (is_async) { gen_return_type = g->builtin_types.entry_void; - param_di_types.append(get_llvm_di_type(g, gen_return_type)); + param_di_types.append(nullptr); } else if (!type_has_bits(fn_type_id->return_type)) { gen_return_type = g->builtin_types.entry_void; - param_di_types.append(get_llvm_di_type(g, gen_return_type)); + param_di_types.append(nullptr); } else if (first_arg_return) { gen_return_type = g->builtin_types.entry_void; - param_di_types.append(get_llvm_di_type(g, gen_return_type)); + param_di_types.append(nullptr); ZigType *gen_type = get_pointer_to_type(g, fn_type_id->return_type, false); gen_param_types.append(get_llvm_type(g, gen_type)); param_di_types.append(get_llvm_di_type(g, gen_type)); @@ -8955,7 +8955,7 @@ void resolve_llvm_types_fn(CodeGen *g, ZigFn *fn) { ZigList param_di_types = {}; ZigList gen_param_types = {}; // first "parameter" is return value - param_di_types.append(get_llvm_di_type(g, gen_return_type)); + param_di_types.append(nullptr); ZigType *frame_type = get_fn_frame_type(g, fn); ZigType *ptr_type = get_pointer_to_type(g, frame_type, false); -- cgit v1.2.3