From 1d34616236521176b3173935951f14b5224b53a3 Mon Sep 17 00:00:00 2001 From: Jacob Young Date: Wed, 9 Apr 2025 23:23:44 -0400 Subject: [PATCH] x86_64: fix `error_set_has_value` of inferred error sets --- src/arch/x86_64/CodeGen.zig | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/src/arch/x86_64/CodeGen.zig b/src/arch/x86_64/CodeGen.zig index ef57983f00..4a93d19a94 100644 --- a/src/arch/x86_64/CodeGen.zig +++ b/src/arch/x86_64/CodeGen.zig @@ -107022,10 +107022,17 @@ const Select = struct { }, .frame => |frame_index| .{ try cg.tempInit(spec.type, .{ .load_frame = .{ .index = frame_index } }), true }, .lazy_symbol => |lazy_symbol_spec| { + const ip = &pt.zcu.intern_pool; const ty = if (lazy_symbol_spec.ref == .none) spec.type else lazy_symbol_spec.ref.typeOf(s); const lazy_symbol: link.File.LazySymbol = .{ .kind = lazy_symbol_spec.kind, - .ty = ty.toIntern(), + .ty = switch (ip.indexToKey(ty.toIntern())) { + .inferred_error_set_type => |func_index| switch (ip.funcIesResolvedUnordered(func_index)) { + .none => unreachable, // unresolved inferred error set + else => |ty_index| ty_index, + }, + else => ty.toIntern(), + }, }; return .{ try cg.tempInit(.usize, .{ .lea_symbol = .{ .sym_index = if (cg.bin_file.cast(.elf)) |elf_file|