From 9eda6ccefce370c76209ea50dd57fe65bfe25536 Mon Sep 17 00:00:00 2001 From: mlugg Date: Thu, 1 Feb 2024 16:58:52 +0000 Subject: InternPool: use separate key for slices This change eliminates some problematic recursive logic in InternPool, and provides a safer API. --- src/codegen/spirv.zig | 18 ++++++------------ 1 file changed, 6 insertions(+), 12 deletions(-) (limited to 'src/codegen/spirv.zig') diff --git a/src/codegen/spirv.zig b/src/codegen/spirv.zig index fd7d2ed8d3..6c058308df 100644 --- a/src/codegen/spirv.zig +++ b/src/codegen/spirv.zig @@ -855,18 +855,12 @@ const DeclGen = struct { const int_ty = ty.intTagType(mod); return try self.constant(int_ty, int_val, repr); }, - .ptr => |ptr| { - const ptr_ty = switch (ptr.len) { - .none => ty, - else => ty.slicePtrFieldType(mod), - }; - const ptr_id = try self.constantPtr(ptr_ty, val); - if (ptr.len == .none) { - return ptr_id; - } - - const len_id = try self.constant(Type.usize, Value.fromInterned(ptr.len), .indirect); - return try self.constructStruct( + .ptr => return self.constantPtr(ty, val), + .slice => |slice| { + const ptr_ty = ty.slicePtrFieldType(mod); + const ptr_id = try self.constantPtr(ptr_ty, Value.fromInterned(slice.ptr)); + const len_id = try self.constant(Type.usize, Value.fromInterned(slice.len), .indirect); + return self.constructStruct( ty, &.{ ptr_ty, Type.usize }, &.{ ptr_id, len_id }, -- cgit v1.2.3