From dda21a25ca12c1d974ace0cb3ce52aa75003da6f Mon Sep 17 00:00:00 2001 From: Andrew Kelley Date: Sun, 28 Jun 2026 17:10:32 -0700 Subject: [PATCH] spirv: make `@extern` support flat for outputs too --- src/Sema.zig | 5 +++-- .../compile_errors/extern_spirv_decoration_validation.zig | 4 ++-- 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/src/Sema.zig b/src/Sema.zig index 2469444831e1037c7e526a33a0f4c2f39b26474a..10272d2a207a3b0b462df67c2a415141bf48d428 100644 --- a/src/Sema.zig +++ b/src/Sema.zig @@ -24966,8 +24966,9 @@ fn zirBuiltinExtern( } if (options.decoration) |decoration| switch (decoration) { - .flat => if (ptr_info.flags.address_space != .input) { - return sema.fail(block, options_src, "'flat' decoration requires 'input' address space", .{}); + .flat => switch (ptr_info.flags.address_space) { + .input, .output => {}, + else => return sema.fail(block, options_src, "\"flat\" decoration requires \"input\" or \"output\" address space", .{}), }, .location, .descriptor => {}, }; diff --git a/test/cases/compile_errors/extern_spirv_decoration_validation.zig b/test/cases/compile_errors/extern_spirv_decoration_validation.zig index ea51feb3b931f5d6a93d8640a9a8819251bb3cfc..ae64963849857b2ba6b95f45b33c179b6700870b 100644 --- a/test/cases/compile_errors/extern_spirv_decoration_validation.zig +++ b/test/cases/compile_errors/extern_spirv_decoration_validation.zig @@ -1,4 +1,4 @@ -const x = @extern(*addrspace(.output) u32, .{ +const x = @extern(*addrspace(.push_constant) u32, .{ .name = "x", .decoration = .{ .flat = 0 }, }); @@ -10,4 +10,4 @@ comptime { // backend=selfhosted // target=spirv32-vulkan // -// :1:45: error: 'flat' decoration requires 'input' address space +// :1:45: error: "flat" decoration requires "input" or "output" address space -- 2.54.0