Commit 491e3ba6b1

Andrew Kelley <andrew@ziglang.org>
2022-03-12 05:00:07
LLVM: fix debug info for pointers to void
1 parent 60d6037
Changed files (2)
src
src/codegen/llvm.zig
@@ -2013,7 +2013,8 @@ pub const DeclGen = struct {
                     ptr_info.@"allowzero" or
                     !ptr_info.mutable or
                     ptr_info.@"volatile" or
-                    ptr_info.size == .Many or ptr_info.size == .C)
+                    ptr_info.size == .Many or ptr_info.size == .C or
+                    !ptr_info.pointee_type.hasRuntimeBitsIgnoreComptime())
                 {
                     var payload: Type.Payload.Pointer = .{
                         .data = .{
@@ -2032,6 +2033,9 @@ pub const DeclGen = struct {
                             },
                         },
                     };
+                    if (!ptr_info.pointee_type.hasRuntimeBitsIgnoreComptime()) {
+                        payload.data.pointee_type = Type.anyopaque;
+                    }
                     const bland_ptr_ty = Type.initPayload(&payload.base);
                     const ptr_di_ty = try dg.lowerDebugType(bland_ptr_ty);
                     // The recursive call to `lowerDebugType` means we can't use `gop` anymore.
src/type.zig
@@ -5342,6 +5342,7 @@ pub const Type = extern union {
     pub const @"void" = initTag(.void);
     pub const @"type" = initTag(.type);
     pub const @"anyerror" = initTag(.anyerror);
+    pub const @"anyopaque" = initTag(.anyopaque);
 
     pub fn ptr(arena: Allocator, target: Target, data: Payload.Pointer.Data) !Type {
         var d = data;