aboutsummaryrefslogtreecommitdiff
path: root/src/codegen.zig
diff options
context:
space:
mode:
authorJacob Young <jacobly0@users.noreply.github.com>2025-05-30 12:56:52 -0400
committerJacob Young <jacobly0@users.noreply.github.com>2025-05-31 18:54:28 -0400
commit77e6513030a6258a893c2f11ad9708c9612b7715 (patch)
treed6821410ab84c13ba0a440bc499422d430b03f7a /src/codegen.zig
parent6198f7afb76b7a5a6d359bfd24f8fbdabc77939b (diff)
downloadzig-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.zig30
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(