lib/std/zig/Ast.zig | 65 +- lib/std/zig/AstGen.zig | 140 ++++- lib/std/zig/Parse.zig | 32 +- lib/std/zig/Zir.zig | 14 +- lib/std/zig/render.zig | 57 +- src/Air.zig | 44 +- src/Air/types_resolved.zig | 9 +- src/Liveness.zig | 311 +++++++--- src/Liveness/Verify.zig | 67 ++- src/Sema.zig | 1009 ++++++++++++++++++++------------ src/Value.zig | 1 + src/arch/aarch64/CodeGen.zig | 5 + src/arch/arm/CodeGen.zig | 4 + src/arch/riscv64/CodeGen.zig | 211 ++++++- src/arch/sparc64/CodeGen.zig | 3 + src/arch/wasm/CodeGen.zig | 110 ++-- src/arch/x86_64/CodeGen.zig | 275 +++++++-- src/codegen/c.zig | 244 ++++++-- src/codegen/llvm.zig | 553 ++++++++++++++--- src/codegen/llvm/Builder.zig | 97 ++- src/codegen/llvm/ir.zig | 14 + src/codegen/spirv.zig | 2 + src/print_air.zig | 15 +- src/print_zir.zig | 1 + test/behavior.zig | 1 + test/behavior/switch.zig | 24 + test/behavior/switch_loop.zig | 200 +++++++ test/cases/compile_errors/duplicate-unused_labels.zig | 6 + 28 files changed, 2690 insertions(+), 824 deletions(-)