From 4d1c5d698fffe9684b72bcd72d60dfd758eb0ccd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Alex=20R=C3=B8nne=20Petersen?= Date: Thu, 17 Sep 2026 07:47:23 +0200 Subject: [PATCH] std.zig.system: turn an assumption in detectNativeCpuAndFeatures() into an assert --- lib/std/zig/system.zig | 19 ++++++++----------- 1 file changed, 8 insertions(+), 11 deletions(-) diff --git a/lib/std/zig/system.zig b/lib/std/zig/system.zig index 6ab26aab14edb82113a7b9cd8f165e5a23df3cfb..5f9a5c68fe52aa4a9bed491c81adf4edfa12c149 100644 --- a/lib/std/zig/system.zig +++ b/lib/std/zig/system.zig @@ -375,15 +375,13 @@ pub fn resolveTargetQuery(io: Io, query: Target.Query) DetectError!Target { var cpu = switch (query.cpu_model) { .native => detectNativeCpuAndFeatures(io, query_cpu_arch), - .baseline => Target.Cpu.baseline(query_cpu_arch, os), + .baseline => null, .determined_by_arch_os => if (query.cpu_arch == null) detectNativeCpuAndFeatures(io, query_cpu_arch) else - Target.Cpu.baseline(query_cpu_arch, os), + null, .explicit => |model| model.toCpu(query_cpu_arch), - } orelse backup_cpu_detection: { - break :backup_cpu_detection Target.Cpu.baseline(query_cpu_arch, os); - }; + } orelse Target.Cpu.baseline(query_cpu_arch, os); // For x86, we need to populate some CPU feature flags depending on architecture // and mode: @@ -536,12 +534,11 @@ fn updateCpuFeatures( } fn detectNativeCpuAndFeatures(io: Io, cpu_arch: Target.Cpu.Arch) ?Target.Cpu { - // Here we switch on a comptime value rather than `cpu_arch`. This is valid because `cpu_arch`, - // although it is a runtime value, is guaranteed to be one of the architectures in the set - // of the respective switch prong. - switch (builtin.cpu.arch) { - .loongarch32, .loongarch64 => return @import("system/loongarch.zig").detectNativeCpuAndFeatures(cpu_arch), - .x86_64, .x86 => return @import("system/x86.zig").detectNativeCpuAndFeatures(cpu_arch), + const family = builtin.target.cpu.arch.family(); + assert(cpu_arch.family() == family); + switch (family) { + .loongarch => return @import("system/loongarch.zig").detectNativeCpuAndFeatures(cpu_arch), + .x86 => return @import("system/x86.zig").detectNativeCpuAndFeatures(cpu_arch), else => {}, } -- 2.54.0