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
signaturebadge-check 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 {...@@ -1187,7 +1187,17 @@ const DeclGen = struct {
1187 log.debug("resolveType: ty = {}", .{ty.fmt(mod)});1187 log.debug("resolveType: ty = {}", .{ty.fmt(mod)});
1188 const target = self.getTarget();1188 const target = self.getTarget();
1189 switch (ty.zigTypeTag(mod)) {1189 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 },
1191 .Bool => switch (repr) {1201 .Bool => switch (repr) {
1192 .direct => return try self.spv.resolve(.bool_type),1202 .direct => return try self.spv.resolve(.bool_type),
1193 .indirect => return try self.intType(.unsigned, 1),1203 .indirect => return try self.intType(.unsigned, 1),
...@@ -1439,11 +1449,9 @@ const DeclGen = struct {...@@ -1439,11 +1449,9 @@ const DeclGen = struct {
1439 return ty_ref;1449 return ty_ref;
1440 },1450 },
1441 .Opaque => {1451 .Opaque => {
1442 return try self.spv.resolve(.{1452 return try self.spv.resolve(.{ .opaque_type = .{
1443 .opaque_type = .{1453 .name = .none, // TODO
1444 .name = .none, // TODO1454 } });
1445 },
1446 });
1447 },1455 },
14481456
1449 .Null,1457 .Null,
test/behavior/cast.zig-2
...@@ -270,8 +270,6 @@ test "implicit cast from *[N]T to [*c]T" {...@@ -270,8 +270,6 @@ test "implicit cast from *[N]T to [*c]T" {
270}270}
271271
272test "*usize to *void" {272test "*usize to *void" {
273 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
274
275 var i = @as(usize, 0);273 var i = @as(usize, 0);
276 var v = @as(*void, @ptrCast(&i));274 var v = @as(*void, @ptrCast(&i));
277 v.* = {};275 v.* = {};