From d0e7a3596ba480fdbc59644fd13859efe3024ea8 Mon Sep 17 00:00:00 2001 From: Robin Voetter Date: Sun, 8 Oct 2023 11:04:48 +0200 Subject: spirv: allow generation of *i0 --- src/codegen/spirv.zig | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) (limited to 'src/codegen') diff --git a/src/codegen/spirv.zig b/src/codegen/spirv.zig index e8e1b89507..dc572d390e 100644 --- a/src/codegen/spirv.zig +++ b/src/codegen/spirv.zig @@ -1219,7 +1219,14 @@ const DeclGen = struct { }, .Int => { const int_info = ty.intInfo(mod); - // TODO: Integers in OpenCL kernels are always unsigned. + if (int_info.bits == 0) { + // Some times, the backend will be asked to generate a pointer to i0. OpTypeInt + // with 0 bits is invalid, so return an opaque type in this case. + assert(repr == .indirect); + return try self.spv.resolve(.{ .opaque_type = .{ + .name = try self.spv.resolveString("u0"), + } }); + } return try self.intType(int_info.signedness, int_info.bits); }, .Enum => { -- cgit v1.2.3