From 0b8f19fcba04cde35ca4831f37f8249d51da9432 Mon Sep 17 00:00:00 2001 From: Andrew Kelley Date: Thu, 18 Jan 2018 15:08:20 -0500 Subject: [PATCH] fix null debug info for 0-length array type closes #702 --- src/analyze.cpp | 5 ++++- test/cases/var_args.zig | 8 ++++++++ 2 files changed, 12 insertions(+), 1 deletion(-) diff --git a/src/analyze.cpp b/src/analyze.cpp index 9da848501445587debf9df35a08b50090f8d9cfc..1bdd8bede439890206876cfeef603f94a6056881 100644 --- a/src/analyze.cpp +++ b/src/analyze.cpp @@ -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; diff --git a/test/cases/var_args.zig b/test/cases/var_args.zig index 7d16106362e7ae3c38328213cb7e9f2cf4e98c7f..aa8b210ad6a45ed5bbfaa681efdab14543928118 100644 --- a/test/cases/var_args.zig +++ b/test/cases/var_args.zig @@ -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]; +} -- 2.54.0