mirror of
https://github.com/ziglang/zig.git
synced 2025-12-26 08:03:08 +00:00
spirv: assign type names to (error) unions
This commit is contained in:
parent
ece52640eb
commit
aeaaa953a0
@ -1178,6 +1178,14 @@ pub const DeclGen = struct {
|
||||
}
|
||||
}
|
||||
|
||||
// Turn a Zig type's name into a cache reference.
|
||||
fn resolveTypeName(self: *DeclGen, ty: Type) !CacheString {
|
||||
var name = std.ArrayList(u8).init(self.gpa);
|
||||
defer name.deinit();
|
||||
try ty.print(name.writer(), self.module);
|
||||
return try self.spv.resolveString(name.items);
|
||||
}
|
||||
|
||||
/// Turn a Zig type into a SPIR-V Type, and return its type result-id.
|
||||
fn resolveTypeId(self: *DeclGen, ty: Type) !IdResultType {
|
||||
const type_ref = try self.resolveType(ty, .direct);
|
||||
@ -1289,6 +1297,7 @@ pub const DeclGen = struct {
|
||||
}
|
||||
|
||||
const ty_ref = try self.spv.resolve(.{ .struct_type = .{
|
||||
.name = try self.resolveTypeName(ty),
|
||||
.member_types = member_types.slice(),
|
||||
.member_names = member_names.slice(),
|
||||
} });
|
||||
@ -1443,6 +1452,7 @@ pub const DeclGen = struct {
|
||||
}
|
||||
|
||||
const ty_ref = try self.spv.resolve(.{ .struct_type = .{
|
||||
.name = try self.resolveTypeName(ty),
|
||||
.member_types = member_types[0..member_index],
|
||||
} });
|
||||
|
||||
@ -1472,10 +1482,8 @@ pub const DeclGen = struct {
|
||||
try member_names.append(try self.spv.resolveString(field_name));
|
||||
}
|
||||
|
||||
const name = ip.stringToSlice(try mod.declPtr(struct_type.decl.unwrap().?).getFullyQualifiedName(mod));
|
||||
|
||||
const ty_ref = try self.spv.resolve(.{ .struct_type = .{
|
||||
.name = try self.spv.resolveString(name),
|
||||
.name = try self.resolveTypeName(ty),
|
||||
.member_types = member_types.items,
|
||||
.member_names = member_names.items,
|
||||
} });
|
||||
@ -1555,6 +1563,7 @@ pub const DeclGen = struct {
|
||||
}
|
||||
|
||||
const ty_ref = try self.spv.resolve(.{ .struct_type = .{
|
||||
.name = try self.resolveTypeName(ty),
|
||||
.member_types = &member_types,
|
||||
.member_names = &member_names,
|
||||
} });
|
||||
|
||||
@ -111,7 +111,7 @@ pub fn updateFunc(self: *SpirV, module: *Module, func_index: InternPool.Index, a
|
||||
|
||||
const func = module.funcInfo(func_index);
|
||||
const decl = module.declPtr(func.owner_decl);
|
||||
log.debug("lowering function {s}", .{ module.intern_pool.stringToSlice(decl.name) });
|
||||
log.debug("lowering function {s}", .{module.intern_pool.stringToSlice(decl.name)});
|
||||
|
||||
var decl_gen = codegen.DeclGen.init(self.base.allocator, module, &self.spv, &self.decl_link);
|
||||
defer decl_gen.deinit();
|
||||
@ -127,7 +127,7 @@ pub fn updateDecl(self: *SpirV, module: *Module, decl_index: Module.Decl.Index)
|
||||
}
|
||||
|
||||
const decl = module.declPtr(decl_index);
|
||||
log.debug("lowering declaration {s}", .{ module.intern_pool.stringToSlice(decl.name) });
|
||||
log.debug("lowering declaration {s}", .{module.intern_pool.stringToSlice(decl.name)});
|
||||
|
||||
var decl_gen = codegen.DeclGen.init(self.base.allocator, module, &self.spv, &self.decl_link);
|
||||
defer decl_gen.deinit();
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user