diff options
| author | Jacob Young <jacobly0@users.noreply.github.com> | 2025-05-30 12:56:52 -0400 |
|---|---|---|
| committer | Jacob Young <jacobly0@users.noreply.github.com> | 2025-05-31 18:54:28 -0400 |
| commit | 77e6513030a6258a893c2f11ad9708c9612b7715 (patch) | |
| tree | d6821410ab84c13ba0a440bc499422d430b03f7a /src/codegen.zig | |
| parent | 6198f7afb76b7a5a6d359bfd24f8fbdabc77939b (diff) | |
| download | zig-77e6513030a6258a893c2f11ad9708c9612b7715.tar.gz zig-77e6513030a6258a893c2f11ad9708c9612b7715.zip | |
cbe: implement `stdbool.h` reserved identifiers
Also remove the legalize pass from zig1.
Diffstat (limited to 'src/codegen.zig')
| -rw-r--r-- | src/codegen.zig | 30 |
1 files changed, 23 insertions, 7 deletions
diff --git a/src/codegen.zig b/src/codegen.zig index 8d609682f1..1f794bbeea 100644 --- a/src/codegen.zig +++ b/src/codegen.zig @@ -27,9 +27,22 @@ pub const CodeGenError = GenerateSymbolError || error{ CodegenFail, }; -fn devFeatureForBackend(comptime backend: std.builtin.CompilerBackend) dev.Feature { - comptime assert(mem.startsWith(u8, @tagName(backend), "stage2_")); - return @field(dev.Feature, @tagName(backend)["stage2_".len..] ++ "_backend"); +fn devFeatureForBackend(backend: std.builtin.CompilerBackend) dev.Feature { + return switch (backend) { + .other, .stage1 => unreachable, + .stage2_aarch64 => .aarch64_backend, + .stage2_arm => .arm_backend, + .stage2_c => .c_backend, + .stage2_llvm => .llvm_backend, + .stage2_powerpc => .powerpc_backend, + .stage2_riscv64 => .riscv64_backend, + .stage2_sparc64 => .sparc64_backend, + .stage2_spirv64 => .spirv64_backend, + .stage2_wasm => .wasm_backend, + .stage2_x86 => .x86_backend, + .stage2_x86_64 => .x86_64_backend, + _ => unreachable, + }; } fn importBackend(comptime backend: std.builtin.CompilerBackend) type { @@ -49,10 +62,10 @@ fn importBackend(comptime backend: std.builtin.CompilerBackend) type { }; } -pub fn legalizeFeatures(pt: Zcu.PerThread, nav_index: InternPool.Nav.Index) *const Air.Legalize.Features { +pub fn legalizeFeatures(pt: Zcu.PerThread, nav_index: InternPool.Nav.Index) ?*const Air.Legalize.Features { const zcu = pt.zcu; const target = &zcu.navFileScope(nav_index).mod.?.resolved_target.result; - return switch (target_util.zigBackend(target.*, zcu.comp.config.use_llvm)) { + switch (target_util.zigBackend(target.*, zcu.comp.config.use_llvm)) { else => unreachable, inline .stage2_llvm, .stage2_c, @@ -65,8 +78,11 @@ pub fn legalizeFeatures(pt: Zcu.PerThread, nav_index: InternPool.Nav.Index) *con .stage2_sparc64, .stage2_spirv64, .stage2_powerpc, - => |backend| importBackend(backend).legalizeFeatures(target), - }; + => |backend| { + dev.check(devFeatureForBackend(backend)); + return importBackend(backend).legalizeFeatures(target); + }, + } } pub fn generateFunction( |
