src/Air.zig | 5 + src/Liveness.zig | 2 + src/Sema.zig | 212 ++++++++++++++++++++++++-------- src/arch/aarch64/CodeGen.zig | 2 + src/arch/arm/CodeGen.zig | 2 + src/arch/riscv64/CodeGen.zig | 2 + src/arch/sparc64/CodeGen.zig | 2 + src/arch/wasm/CodeGen.zig | 1 + src/arch/x86_64/CodeGen.zig | 2 + src/codegen/c.zig | 4 +- src/codegen/llvm.zig | 87 +++++++++++++ src/print_air.zig | 1 + test/behavior/switch.zig | 1 + test/cases/safety/@intToEnum - no matching tag value.zig | 9 +- test/cases/safety/@tagName on corrupted enum value.zig | 3 +- test/cases/safety/@tagName on corrupted union value.zig | 3 +- test/cases/safety/cast []u8 to bigger slice of wrong size.zig | 10 +- test/cases/safety/empty slice with sentinel out of bounds.zig | 4 +- test/cases/safety/pointer casting null to non-optional pointer.zig | 10 +- test/cases/safety/pointer slice sentinel mismatch.zig | 6 +- test/cases/safety/shift left by huge amount.zig | 2 +- test/cases/safety/shift right by huge amount.zig | 2 +- test/cases/safety/signed integer division overflow - vectors.zig | 10 +- test/cases/safety/signed integer division overflow.zig | 10 +- test/cases/safety/slice sentinel mismatch - floats.zig | 6 +- test/cases/safety/slice sentinel mismatch - optional pointers.zig | 6 +- test/cases/safety/slice slice sentinel mismatch.zig | 6 +- test/cases/safety/slice with sentinel out of bounds - runtime len.zig | 22 ++++ test/cases/safety/slice with sentinel out of bounds.zig | 4 +- test/cases/safety/slicing null C pointer - runtime len.zig | 20 +++ test/cases/safety/slicing null C pointer.zig | 10 +- test/cases/safety/switch on corrupted enum value.zig | 7 +- test/cases/safety/switch on corrupted union value.zig | 7 +- 33 files changed, 378 insertions(+), 102 deletions(-)