aboutsummaryrefslogtreecommitdiff
path: root/src/codegen/c.zig
diff options
context:
space:
mode:
authorJacob Young <jacobly0@users.noreply.github.com>2025-05-30 14:38:46 -0400
committermlugg <mlugg@mlugg.co.uk>2025-06-01 08:24:00 +0100
commitd9b6d1ed33d18eb13fa2cb39da3e7a381742975b (patch)
treeafdfcb8ec66c779f9afc064f27befa3ce8036c63 /src/codegen/c.zig
parent4c4dacf81a5da85a1f7d1550ed45f5cb20fd1524 (diff)
downloadzig-d9b6d1ed33d18eb13fa2cb39da3e7a381742975b.tar.gz
zig-d9b6d1ed33d18eb13fa2cb39da3e7a381742975b.zip
cbe: legalize safety instructions in non-zig1 builds
This is valid if the bootstrap dev env doesn't need to support runtime safety. Another solution can always be implemented if needs change.
Diffstat (limited to 'src/codegen/c.zig')
-rw-r--r--src/codegen/c.zig8
1 files changed, 7 insertions, 1 deletions
diff --git a/src/codegen/c.zig b/src/codegen/c.zig
index e76c8e069d..8d947ce56a 100644
--- a/src/codegen/c.zig
+++ b/src/codegen/c.zig
@@ -4,6 +4,7 @@ const assert = std.debug.assert;
const mem = std.mem;
const log = std.log.scoped(.c);
+const dev = @import("../dev.zig");
const link = @import("../link.zig");
const Zcu = @import("../Zcu.zig");
const Module = @import("../Package/Module.zig");
@@ -21,7 +22,12 @@ const BigIntLimb = std.math.big.Limb;
const BigInt = std.math.big.int;
pub fn legalizeFeatures(_: *const std.Target) ?*const Air.Legalize.Features {
- return null;
+ return if (dev.env.supports(.legalize)) comptime &.initMany(&.{
+ .expand_intcast_safe,
+ .expand_add_safe,
+ .expand_sub_safe,
+ .expand_mul_safe,
+ }) else null; // we don't currently ask zig1 to use safe optimization modes
}
pub const CType = @import("c/Type.zig");