diff options
| author | Jacob Young <jacobly0@users.noreply.github.com> | 2024-03-01 16:46:48 +0100 |
|---|---|---|
| committer | Andrew Kelley <andrew@ziglang.org> | 2024-03-01 17:42:54 -0800 |
| commit | b60fc16b4f6b973ce2207fb28b77606d45961972 (patch) | |
| tree | eb90eb7d6cfcfa8d90f821b34c4e6d17e7159e1a /src/arch | |
| parent | 155f5274ff4db3bc6e75ae5660cabab5bab22f42 (diff) | |
| download | zig-b60fc16b4f6b973ce2207fb28b77606d45961972.tar.gz zig-b60fc16b4f6b973ce2207fb28b77606d45961972.zip | |
compiler: audit debug mode checks
* Introduce `-Ddebug-extensions` for enabling compiler debug helpers
* Replace safety mode checks with `std.debug.runtime_safety`
* Replace debugger helper checks with `!builtin.strip_debug_info`
Sometimes, you just have to debug optimized compilers...
Diffstat (limited to 'src/arch')
| -rw-r--r-- | src/arch/aarch64/Mir.zig | 4 | ||||
| -rw-r--r-- | src/arch/arm/Mir.zig | 4 | ||||
| -rw-r--r-- | src/arch/riscv64/Mir.zig | 4 | ||||
| -rw-r--r-- | src/arch/sparc64/Mir.zig | 4 | ||||
| -rw-r--r-- | src/arch/wasm/CodeGen.zig | 8 | ||||
| -rw-r--r-- | src/arch/x86_64/Mir.zig | 4 |
6 files changed, 14 insertions, 14 deletions
diff --git a/src/arch/aarch64/Mir.zig b/src/arch/aarch64/Mir.zig index 6c0a1ec5b4..d4b2d0d1a0 100644 --- a/src/arch/aarch64/Mir.zig +++ b/src/arch/aarch64/Mir.zig @@ -484,9 +484,9 @@ pub const Inst = struct { }; // Make sure we don't accidentally make instructions bigger than expected. - // Note that in Debug builds, Zig is allowed to insert a secret field for safety checks. + // Note that in safety builds, Zig is allowed to insert a secret field for safety checks. comptime { - if (builtin.mode != .Debug and builtin.mode != .ReleaseSafe) { + if (!std.debug.runtime_safety) { assert(@sizeOf(Data) == 8); } } diff --git a/src/arch/arm/Mir.zig b/src/arch/arm/Mir.zig index e890aaf29c..5e651b7939 100644 --- a/src/arch/arm/Mir.zig +++ b/src/arch/arm/Mir.zig @@ -264,9 +264,9 @@ pub const Inst = struct { }; // Make sure we don't accidentally make instructions bigger than expected. - // Note that in Debug builds, Zig is allowed to insert a secret field for safety checks. + // Note that in safety builds, Zig is allowed to insert a secret field for safety checks. comptime { - if (builtin.mode != .Debug and builtin.mode != .ReleaseSafe) { + if (!std.debug.runtime_safety) { assert(@sizeOf(Data) == 8); } } diff --git a/src/arch/riscv64/Mir.zig b/src/arch/riscv64/Mir.zig index da62a68941..9fe29a7ecd 100644 --- a/src/arch/riscv64/Mir.zig +++ b/src/arch/riscv64/Mir.zig @@ -112,9 +112,9 @@ pub const Inst = struct { }; // Make sure we don't accidentally make instructions bigger than expected. - // Note that in Debug builds, Zig is allowed to insert a secret field for safety checks. + // Note that in safety builds, Zig is allowed to insert a secret field for safety checks. // comptime { - // if (builtin.mode != .Debug) { + // if (!std.debug.runtime_safety) { // assert(@sizeOf(Inst) == 8); // } // } diff --git a/src/arch/sparc64/Mir.zig b/src/arch/sparc64/Mir.zig index 31ea4e23c8..e9086db7a5 100644 --- a/src/arch/sparc64/Mir.zig +++ b/src/arch/sparc64/Mir.zig @@ -356,9 +356,9 @@ pub const Inst = struct { }; // Make sure we don't accidentally make instructions bigger than expected. - // Note that in Debug builds, Zig is allowed to insert a secret field for safety checks. + // Note that in safety builds, Zig is allowed to insert a secret field for safety checks. comptime { - if (builtin.mode != .Debug and builtin.mode != .ReleaseSafe) { + if (!std.debug.runtime_safety) { assert(@sizeOf(Data) == 8); } } diff --git a/src/arch/wasm/CodeGen.zig b/src/arch/wasm/CodeGen.zig index 361fd96374..5439cc5c10 100644 --- a/src/arch/wasm/CodeGen.zig +++ b/src/arch/wasm/CodeGen.zig @@ -735,7 +735,7 @@ free_locals_v128: std.ArrayListUnmanaged(u32) = .{}, /// stored in our `values` map and therefore cause bugs. air_bookkeeping: @TypeOf(bookkeeping_init) = bookkeeping_init, -const bookkeeping_init = if (builtin.mode == .Debug) @as(usize, 0) else {}; +const bookkeeping_init = if (std.debug.runtime_safety) @as(usize, 0) else {}; const InnerError = error{ OutOfMemory, @@ -830,7 +830,7 @@ fn finishAir(func: *CodeGen, inst: Air.Inst.Index, result: WValue, operands: []c branch.values.putAssumeCapacityNoClobber(inst.toRef(), result); } - if (builtin.mode == .Debug) { + if (std.debug.runtime_safety) { func.air_bookkeeping += 1; } } @@ -866,7 +866,7 @@ const BigTomb = struct { bt.gen.currentBranch().values.putAssumeCapacityNoClobber(bt.inst.toRef(), result); } - if (builtin.mode == .Debug) { + if (std.debug.runtime_safety) { bt.gen.air_bookkeeping += 1; } } @@ -2079,7 +2079,7 @@ fn genBody(func: *CodeGen, body: []const Air.Inst.Index) InnerError!void { try func.currentBranch().values.ensureUnusedCapacity(func.gpa, Liveness.bpi); try func.genInst(inst); - if (builtin.mode == .Debug and func.air_bookkeeping < old_bookkeeping_value + 1) { + if (std.debug.runtime_safety and func.air_bookkeeping < old_bookkeeping_value + 1) { std.debug.panic("Missing call to `finishAir` in AIR instruction %{d} ('{}')", .{ inst, func.air.instructions.items(.tag)[@intFromEnum(inst)], diff --git a/src/arch/x86_64/Mir.zig b/src/arch/x86_64/Mir.zig index 6cccb34b3e..d2dd6237a5 100644 --- a/src/arch/x86_64/Mir.zig +++ b/src/arch/x86_64/Mir.zig @@ -1012,9 +1012,9 @@ pub const Inst = struct { }; // Make sure we don't accidentally make instructions bigger than expected. - // Note that in Debug builds, Zig is allowed to insert a secret field for safety checks. + // Note that in safety builds, Zig is allowed to insert a secret field for safety checks. comptime { - if (builtin.mode != .Debug and builtin.mode != .ReleaseSafe) { + if (!std.debug.runtime_safety) { assert(@sizeOf(Data) == 8); } } |
