aboutsummaryrefslogtreecommitdiff
path: root/src/arch
diff options
context:
space:
mode:
authorJacob Young <jacobly0@users.noreply.github.com>2024-03-01 16:46:48 +0100
committerAndrew Kelley <andrew@ziglang.org>2024-03-01 17:42:54 -0800
commitb60fc16b4f6b973ce2207fb28b77606d45961972 (patch)
treeeb90eb7d6cfcfa8d90f821b34c4e6d17e7159e1a /src/arch
parent155f5274ff4db3bc6e75ae5660cabab5bab22f42 (diff)
downloadzig-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.zig4
-rw-r--r--src/arch/arm/Mir.zig4
-rw-r--r--src/arch/riscv64/Mir.zig4
-rw-r--r--src/arch/sparc64/Mir.zig4
-rw-r--r--src/arch/wasm/CodeGen.zig8
-rw-r--r--src/arch/x86_64/Mir.zig4
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);
}
}