authorgravatar for robin@voetter.nlRobin Voetter <robin@voetter.nl> 2023-10-08 02:06:47+02:00
committergravatar for robin@voetter.nlRobin Voetter <robin@voetter.nl> 2023-10-15 14:00:03+02:00
logae3efab2260ce84fa25dd874e0c193d919eb80c1
tree313f4bd67682c7820c22f158b8ac8a493d7776ca
parentfe51ff9fc14c38337c559acb7647480188b1d154
signature Signed by SSH key SHA256:CQ99aPxq+RueiL9u7z0FEki5Fm7V6T8q4PrEGmINrA4

spirv: generate *void as pointer to opaque


2 files changed, 14 insertions(+), 8 deletions(-)

src/codegen/spirv.zig+14-6
......@@ -1187,7 +1187,17 @@ const DeclGen = struct {
11871187 log.debug("resolveType: ty = {}", .{ty.fmt(mod)});
11881188 const target = self.getTarget();
11891189 switch (ty.zigTypeTag(mod)) {
1190 .Void, .NoReturn => return try self.spv.resolve(.void_type),
1190 .NoReturn => {
1191 assert(repr == .direct);
1192 return try self.spv.resolve(.void_type);
1193 },
1194 .Void => switch (repr) {
1195 .direct => return try self.spv.resolve(.void_type),
1196 // Pointers to void
1197 .indirect => return try self.spv.resolve(.{ .opaque_type = .{
1198 .name = try self.spv.resolveString("void"),
1199 } }),
1200 },
11911201 .Bool => switch (repr) {
11921202 .direct => return try self.spv.resolve(.bool_type),
11931203 .indirect => return try self.intType(.unsigned, 1),
......@@ -1439,11 +1449,9 @@ const DeclGen = struct {
14391449 return ty_ref;
14401450 },
14411451 .Opaque => {
1442 return try self.spv.resolve(.{
1443 .opaque_type = .{
1444 .name = .none, // TODO
1445 },
1446 });
1452 return try self.spv.resolve(.{ .opaque_type = .{
1453 .name = .none, // TODO
1454 } });
14471455 },
14481456
14491457 .Null,
test/behavior/cast.zig-2
......@@ -270,8 +270,6 @@ test "implicit cast from *[N]T to [*c]T" {
270270}
271271
272272test "*usize to *void" {
273 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
274
275273 var i = @as(usize, 0);
276274 var v = @as(*void, @ptrCast(&i));
277275 v.* = {};