authorgravatar for andrew@ziglang.orgAndrew Kelley <andrew@ziglang.org> 2018-01-18 15:08:20-05:00
committergravatar for andrew@ziglang.orgAndrew Kelley <andrew@ziglang.org> 2018-01-18 15:08:20-05:00
log0b8f19fcba04cde35ca4831f37f8249d51da9432
tree2a75676d565b2bf31ad955ce4b2b659e85ce3791
parent0aae96b5f0a592ee3e2ff3607121740042878634

fix null debug info for 0-length array type

closes #702

2 files changed, 12 insertions(+), 1 deletions(-)

src/analyze.cpp+4-1
...@@ -609,7 +609,10 @@ TypeTableEntry *get_array_type(CodeGen *g, TypeTableEntry *child_type, uint64_t...@@ -609,7 +609,10 @@ TypeTableEntry *get_array_type(CodeGen *g, TypeTableEntry *child_type, uint64_t
609 buf_resize(&entry->name, 0);609 buf_resize(&entry->name, 0);
610 buf_appendf(&entry->name, "[%" ZIG_PRI_u64 "]%s", array_size, buf_ptr(&child_type->name));610 buf_appendf(&entry->name, "[%" ZIG_PRI_u64 "]%s", array_size, buf_ptr(&child_type->name));
611611
612 if (!entry->zero_bits) {612 if (entry->zero_bits) {
613 entry->di_type = ZigLLVMCreateDebugArrayType(g->dbuilder, 0,
614 0, child_type->di_type, 0);
615 } else {
613 entry->type_ref = child_type->type_ref ? LLVMArrayType(child_type->type_ref,616 entry->type_ref = child_type->type_ref ? LLVMArrayType(child_type->type_ref,
614 (unsigned int)array_size) : nullptr;617 (unsigned int)array_size) : nullptr;
615618
test/cases/var_args.zig+8
...@@ -79,3 +79,11 @@ fn assertSlicePtrsEql(args: ...) {...@@ -79,3 +79,11 @@ fn assertSlicePtrsEql(args: ...) {
79 assert(s1.ptr == s2.ptr);79 assert(s1.ptr == s2.ptr);
80}80}
8181
82
83test "pass zero length array to var args param" {
84 doNothingWithFirstArg("");
85}
86
87fn doNothingWithFirstArg(args: ...) {
88 const a = args[0];
89}