From 9e519727014fcc484714d8230a0a8bce8744998d Mon Sep 17 00:00:00 2001 From: Jacob Young Date: Sun, 26 Feb 2023 05:27:26 -0500 Subject: llvm: fix untagged struct names in debug info for llvm (again) At least lldb misbehaves with all these same-named unions, so just generate a unique name. --- src/codegen/llvm.zig | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) (limited to 'src/codegen/llvm.zig') diff --git a/src/codegen/llvm.zig b/src/codegen/llvm.zig index 558556f108..6f240b88f5 100644 --- a/src/codegen/llvm.zig +++ b/src/codegen/llvm.zig @@ -2214,11 +2214,16 @@ pub const Object = struct { )); } - const union_name = if (layout.tag_size == 0) name.ptr else "AnonUnion"; + var union_name_buf: ?[:0]const u8 = null; + defer if (union_name_buf) |buf| gpa.free(buf); + const union_name = if (layout.tag_size == 0) name else name: { + union_name_buf = try std.fmt.allocPrintZ(gpa, "{s}:Payload", .{name}); + break :name union_name_buf.?; + }; const union_di_ty = dib.createUnionType( compile_unit_scope, - union_name, + union_name.ptr, null, // file 0, // line ty.abiSize(target) * 8, // size in bits -- cgit v1.2.3