diff --git a/src/codegen/llvm.zig b/src/codegen/llvm.zig index 190fcd0ee64488835bf64a5259e1cf33ad361b66..46c0a25784651b50101f9af6418116f5e0a1be5d 100644 --- a/src/codegen/llvm.zig +++ b/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. diff --git a/src/type.zig b/src/type.zig index 04bd015bcc1fe8a5897fd04d357667b305c9cc74..0bac905ec793bb036919500328561766338c919d 100644 --- a/src/type.zig +++ b/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;