From ae3efab2260ce84fa25dd874e0c193d919eb80c1 Mon Sep 17 00:00:00 2001 From: Robin Voetter Date: Sun, 8 Oct 2023 02:06:47 +0200 Subject: spirv: generate *void as pointer to opaque --- src/codegen/spirv.zig | 20 ++++++++++++++------ 1 file changed, 14 insertions(+), 6 deletions(-) (limited to 'src/codegen') 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, -- cgit v1.2.3