authorgravatar for andrew@ziglang.orgAndrew Kelley <andrew@ziglang.org> 2019-02-04 22:14:35-05:00
committergravatar for andrew@ziglang.orgAndrew Kelley <andrew@ziglang.org> 2019-02-04 22:16:16-05:00
log06be65a602c2cd83bfdb9a1fa31e0ce038b0262d
treedf911bb129306aa41dbbe1d5227d4492a4ccd7c3
parent8c6fa982cd0a02775264b616c37da9907cc603bb
signaturelock-open Commit is signed but in an unrecognized format.

fix vector debug info tripping LLVM assertion


3 files changed, 7 insertions(+), 6 deletions(-)

src/analyze.cpp+3-2
......@@ -4486,8 +4486,9 @@ ZigType *get_vector_type(CodeGen *g, uint32_t len, ZigType *elem_type) {
44864486 buf_resize(&entry->name, 0);
44874487 buf_appendf(&entry->name, "@Vector(%u, %s)", len, buf_ptr(&elem_type->name));
44884488
4489 entry->di_type = ZigLLVMDIBuilderCreateVectorType(g->dbuilder, len,
4490 LLVMABIAlignmentOfType(g->target_data_ref, entry->type_ref), elem_type->di_type);
4489 entry->di_type = ZigLLVMDIBuilderCreateVectorType(g->dbuilder,
4490 len * type_size_bits(g, elem_type),
4491 LLVMABIAlignmentOfType(g->target_data_ref, entry->type_ref), elem_type->di_type, len);
44914492
44924493 g->type_table.put(type_id, entry);
44934494 return entry;
src/zig_llvm.cpp+3-3
......@@ -264,12 +264,12 @@ ZigLLVMDIType *ZigLLVMCreateDebugBasicType(ZigLLVMDIBuilder *dibuilder, const ch
264264}
265265
266266struct ZigLLVMDIType *ZigLLVMDIBuilderCreateVectorType(struct ZigLLVMDIBuilder *dibuilder,
267 uint64_t Size, uint32_t AlignInBits, struct ZigLLVMDIType *Ty)
267 uint64_t SizeInBits, uint32_t AlignInBits, struct ZigLLVMDIType *Ty, uint32_t elem_count)
268268{
269269 SmallVector<Metadata *, 1> subrange;
270 subrange.push_back(reinterpret_cast<DIBuilder*>(dibuilder)->getOrCreateSubrange(0, Size));
270 subrange.push_back(reinterpret_cast<DIBuilder*>(dibuilder)->getOrCreateSubrange(0, elem_count));
271271 DIType *di_type = reinterpret_cast<DIBuilder*>(dibuilder)->createVectorType(
272 Size,
272 SizeInBits,
273273 AlignInBits,
274274 reinterpret_cast<DIType*>(Ty),
275275 reinterpret_cast<DIBuilder*>(dibuilder)->getOrCreateArray(subrange));
src/zig_llvm.h+1-1
......@@ -192,7 +192,7 @@ ZIG_EXTERN_C struct ZigLLVMDISubprogram *ZigLLVMCreateFunction(struct ZigLLVMDIB
192192 unsigned scope_line, unsigned flags, bool is_optimized, struct ZigLLVMDISubprogram *decl_subprogram);
193193
194194ZIG_EXTERN_C struct ZigLLVMDIType *ZigLLVMDIBuilderCreateVectorType(struct ZigLLVMDIBuilder *dibuilder,
195 uint64_t Size, uint32_t AlignInBits, struct ZigLLVMDIType *Ty);
195 uint64_t SizeInBits, uint32_t AlignInBits, struct ZigLLVMDIType *Ty, uint32_t elem_count);
196196
197197ZIG_EXTERN_C void ZigLLVMFnSetSubprogram(LLVMValueRef fn, struct ZigLLVMDISubprogram *subprogram);
198198