Skip to content

Commit

Permalink
fix null debug info for 0-length array type
Browse files Browse the repository at this point in the history
closes #702
  • Loading branch information
andrewrk committed Jan 18, 2018
1 parent 0aae96b commit 0b8f19f
Show file tree
Hide file tree
Showing 2 changed files with 12 additions and 1 deletion.
5 changes: 4 additions & 1 deletion src/analyze.cpp
Expand Up @@ -609,7 +609,10 @@ TypeTableEntry *get_array_type(CodeGen *g, TypeTableEntry *child_type, uint64_t
buf_resize(&entry->name, 0);
buf_appendf(&entry->name, "[%" ZIG_PRI_u64 "]%s", array_size, buf_ptr(&child_type->name));

if (!entry->zero_bits) {
if (entry->zero_bits) {
entry->di_type = ZigLLVMCreateDebugArrayType(g->dbuilder, 0,
0, child_type->di_type, 0);
} else {
entry->type_ref = child_type->type_ref ? LLVMArrayType(child_type->type_ref,
(unsigned int)array_size) : nullptr;

Expand Down
8 changes: 8 additions & 0 deletions test/cases/var_args.zig
Expand Up @@ -79,3 +79,11 @@ fn assertSlicePtrsEql(args: ...) {
assert(s1.ptr == s2.ptr);
}


test "pass zero length array to var args param" {
doNothingWithFirstArg("");
}

fn doNothingWithFirstArg(args: ...) {
const a = args[0];
}

0 comments on commit 0b8f19f

Please sign in to comment.