In theory we could sometimes take advantage of SIGFPE for our integer division by zero safety check:
test "integer division by zero" {
@setRuntimeSafety(false);
var x: i32 = 10;
var y: i32 = 0;
var z = x / y;
_ = z;
}
$ stage3/bin/zig test test3.zig
Test [1/1] test.integer division by zero... Arithmetic exception at address 0x20de9a
./test3.zig:5:5: 0x20de9a in test.integer division by zero (test)
var z = x / y;
^
However, we still need safety checks sometimes, in the case of:
- architectures that do not have such exceptions for integer division
- LLVM, which declares integer division by zero as undefined behavior
In theory we could sometimes take advantage of SIGFPE for our integer division by zero safety check:
However, we still need safety checks sometimes, in the case of: