diff --git a/src/codegen/spirv.zig b/src/codegen/spirv.zig index 0ab87b4df0..86232c6149 100644 --- a/src/codegen/spirv.zig +++ b/src/codegen/spirv.zig @@ -1187,7 +1187,17 @@ const DeclGen = struct { log.debug("resolveType: ty = {}", .{ty.fmt(mod)}); const target = self.getTarget(); switch (ty.zigTypeTag(mod)) { - .Void, .NoReturn => return try self.spv.resolve(.void_type), + .NoReturn => { + assert(repr == .direct); + return try self.spv.resolve(.void_type); + }, + .Void => switch (repr) { + .direct => return try self.spv.resolve(.void_type), + // Pointers to void + .indirect => return try self.spv.resolve(.{ .opaque_type = .{ + .name = try self.spv.resolveString("void"), + } }), + }, .Bool => switch (repr) { .direct => return try self.spv.resolve(.bool_type), .indirect => return try self.intType(.unsigned, 1), @@ -1439,11 +1449,9 @@ const DeclGen = struct { return ty_ref; }, .Opaque => { - return try self.spv.resolve(.{ - .opaque_type = .{ - .name = .none, // TODO - }, - }); + return try self.spv.resolve(.{ .opaque_type = .{ + .name = .none, // TODO + } }); }, .Null, diff --git a/test/behavior/cast.zig b/test/behavior/cast.zig index ec198c3133..388d6f4750 100644 --- a/test/behavior/cast.zig +++ b/test/behavior/cast.zig @@ -270,8 +270,6 @@ test "implicit cast from *[N]T to [*c]T" { } test "*usize to *void" { - if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest; - var i = @as(usize, 0); var v = @as(*void, @ptrCast(&i)); v.* = {};