diff options
| -rw-r--r-- | src/arch/riscv64/CodeGen.zig | 2 | ||||
| -rw-r--r-- | src/arch/wasm/CodeGen.zig | 2 | ||||
| -rw-r--r-- | src/codegen/c.zig | 8 | ||||
| -rw-r--r-- | src/codegen/spirv.zig | 2 | ||||
| -rw-r--r-- | src/dev.zig | 3 |
5 files changed, 13 insertions, 4 deletions
diff --git a/src/arch/riscv64/CodeGen.zig b/src/arch/riscv64/CodeGen.zig index 316b29734a..8a40c61cdc 100644 --- a/src/arch/riscv64/CodeGen.zig +++ b/src/arch/riscv64/CodeGen.zig @@ -51,7 +51,7 @@ const Instruction = encoding.Instruction; const InnerError = CodeGenError || error{OutOfRegisters}; -pub fn legalizeFeatures(_: *const std.Target) ?*const Air.Legalize.Features { +pub fn legalizeFeatures(_: *const std.Target) *const Air.Legalize.Features { return comptime &.initMany(&.{ .expand_intcast_safe, .expand_add_safe, diff --git a/src/arch/wasm/CodeGen.zig b/src/arch/wasm/CodeGen.zig index 0704557cbb..36908eb236 100644 --- a/src/arch/wasm/CodeGen.zig +++ b/src/arch/wasm/CodeGen.zig @@ -31,7 +31,7 @@ const libcFloatSuffix = target_util.libcFloatSuffix; const compilerRtFloatAbbrev = target_util.compilerRtFloatAbbrev; const compilerRtIntAbbrev = target_util.compilerRtIntAbbrev; -pub fn legalizeFeatures(_: *const std.Target) ?*const Air.Legalize.Features { +pub fn legalizeFeatures(_: *const std.Target) *const Air.Legalize.Features { return comptime &.initMany(&.{ .expand_intcast_safe, .expand_add_safe, 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"); diff --git a/src/codegen/spirv.zig b/src/codegen/spirv.zig index e23ffbf66a..1381a79075 100644 --- a/src/codegen/spirv.zig +++ b/src/codegen/spirv.zig @@ -28,7 +28,7 @@ const SpvAssembler = @import("spirv/Assembler.zig"); const InstMap = std.AutoHashMapUnmanaged(Air.Inst.Index, IdRef); -pub fn legalizeFeatures(_: *const std.Target) ?*const Air.Legalize.Features { +pub fn legalizeFeatures(_: *const std.Target) *const Air.Legalize.Features { return comptime &.initMany(&.{ .expand_intcast_safe, .expand_add_safe, diff --git a/src/dev.zig b/src/dev.zig index 019f18daeb..1dc8264ebc 100644 --- a/src/dev.zig +++ b/src/dev.zig @@ -1,5 +1,8 @@ pub const Env = enum { /// zig1 features + /// - `-ofmt=c` only + /// - `-OReleaseFast` or `-OReleaseSmall` only + /// - no `@setRuntimeSafety(true)` bootstrap, /// zig2 features |
