mirror of
https://github.com/ziglang/zig.git
synced 2026-02-21 16:54:52 +00:00
LLVM Builder: Emit debug vector types with DIVector flag
This commit is contained in:
parent
5e9d0da43b
commit
53f6071486
@ -2224,7 +2224,7 @@ pub const Object = struct {
|
||||
else => try o.lowerDebugType(ty.childType(mod)),
|
||||
};
|
||||
|
||||
const debug_vector_type = try o.builder.debugArrayType(
|
||||
const debug_vector_type = try o.builder.debugVectorType(
|
||||
Builder.MetadataString.none, // Name
|
||||
Builder.Metadata.none, // File
|
||||
Builder.Metadata.none, // Scope
|
||||
|
||||
@ -7608,6 +7608,7 @@ pub const Metadata = enum(u32) {
|
||||
composite_union_type,
|
||||
composite_enumeration_type,
|
||||
composite_array_type,
|
||||
composite_vector_type,
|
||||
derived_pointer_type,
|
||||
derived_member_type,
|
||||
subroutine_type,
|
||||
@ -11173,6 +11174,30 @@ pub fn debugArrayType(
|
||||
);
|
||||
}
|
||||
|
||||
pub fn debugVectorType(
|
||||
self: *Builder,
|
||||
name: MetadataString,
|
||||
file: Metadata,
|
||||
scope: Metadata,
|
||||
line: u32,
|
||||
underlying_type: Metadata,
|
||||
size_in_bits: u64,
|
||||
align_in_bits: u64,
|
||||
fields_tuple: Metadata,
|
||||
) Allocator.Error!Metadata {
|
||||
try self.ensureUnusedMetadataCapacity(1, Metadata.CompositeType, 0);
|
||||
return self.debugVectorTypeAssumeCapacity(
|
||||
name,
|
||||
file,
|
||||
scope,
|
||||
line,
|
||||
underlying_type,
|
||||
size_in_bits,
|
||||
align_in_bits,
|
||||
fields_tuple,
|
||||
);
|
||||
}
|
||||
|
||||
pub fn debugPointerType(
|
||||
self: *Builder,
|
||||
name: MetadataString,
|
||||
@ -11626,6 +11651,30 @@ fn debugArrayTypeAssumeCapacity(
|
||||
);
|
||||
}
|
||||
|
||||
fn debugVectorTypeAssumeCapacity(
|
||||
self: *Builder,
|
||||
name: MetadataString,
|
||||
file: Metadata,
|
||||
scope: Metadata,
|
||||
line: u32,
|
||||
underlying_type: Metadata,
|
||||
size_in_bits: u64,
|
||||
align_in_bits: u64,
|
||||
fields_tuple: Metadata,
|
||||
) Metadata {
|
||||
return self.debugCompositeTypeAssumeCapacity(
|
||||
.composite_vector_type,
|
||||
name,
|
||||
file,
|
||||
scope,
|
||||
line,
|
||||
underlying_type,
|
||||
size_in_bits,
|
||||
align_in_bits,
|
||||
fields_tuple,
|
||||
);
|
||||
}
|
||||
|
||||
fn debugCompositeTypeAssumeCapacity(
|
||||
self: *Builder,
|
||||
tag: Metadata.Tag,
|
||||
@ -13166,6 +13215,7 @@ pub fn toBitcode(self: *Builder, allocator: Allocator) bitcode_writer.Error![]co
|
||||
.composite_union_type,
|
||||
.composite_enumeration_type,
|
||||
.composite_array_type,
|
||||
.composite_vector_type,
|
||||
=> |kind| {
|
||||
const extra = self.metadataExtraData(Metadata.CompositeType, data);
|
||||
|
||||
@ -13174,7 +13224,9 @@ pub fn toBitcode(self: *Builder, allocator: Allocator) bitcode_writer.Error![]co
|
||||
.composite_struct_type => std.dwarf.TAG.structure_type,
|
||||
.composite_union_type => std.dwarf.TAG.union_type,
|
||||
.composite_enumeration_type => std.dwarf.TAG.enumeration_type,
|
||||
.composite_array_type => std.dwarf.TAG.array_type,
|
||||
.composite_array_type,
|
||||
.composite_vector_type,
|
||||
=> std.dwarf.TAG.array_type,
|
||||
else => unreachable,
|
||||
},
|
||||
.name = extra.name,
|
||||
@ -13184,6 +13236,7 @@ pub fn toBitcode(self: *Builder, allocator: Allocator) bitcode_writer.Error![]co
|
||||
.underlying_type = extra.underlying_type,
|
||||
.size_in_bits = @as(u64, extra.size_in_bits_lo) | @as(u64, extra.size_in_bits_hi) << 32,
|
||||
.align_in_bits = @as(u64, extra.align_in_bits_lo) | @as(u64, extra.align_in_bits_hi) << 32,
|
||||
.flags = if (kind == .composite_vector_type) DIFlags.Vector else 0,
|
||||
.elements = extra.fields_tuple,
|
||||
}, metadata_adapter);
|
||||
},
|
||||
|
||||
@ -767,7 +767,7 @@ pub const MetadataBlock = struct {
|
||||
.{ .vbr = 6 }, // size in bits
|
||||
.{ .vbr = 6 }, // align in bits
|
||||
.{ .literal = 0 }, // offset in bits
|
||||
.{ .literal = 0 }, // flags
|
||||
.{ .fixed = 32 }, // flags
|
||||
MetadataAbbrev, // elements
|
||||
.{ .literal = 0 }, // runtime lang
|
||||
.{ .literal = 0 }, // vtable holder
|
||||
@ -789,6 +789,7 @@ pub const MetadataBlock = struct {
|
||||
underlying_type: Builder.Metadata,
|
||||
size_in_bits: u64,
|
||||
align_in_bits: u64,
|
||||
flags: u32,
|
||||
elements: Builder.Metadata,
|
||||
};
|
||||
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user