lib/test_runner.zig | 2 +- src/Air.zig | 214 +++ src/Compilation.zig | 3 +- src/Liveness.zig | 1841 ++++++++++--------- src/Liveness/Verify.zig | 610 ++++++ src/Module.zig | 33 + src/arch/aarch64/CodeGen.zig | 11 +- src/arch/arm/CodeGen.zig | 11 +- src/arch/riscv64/CodeGen.zig | 5 + src/arch/sparc64/CodeGen.zig | 11 +- src/arch/wasm/CodeGen.zig | 99 +- src/arch/x86_64/CodeGen.zig | 3162 +++++++++++++++----------------- src/codegen/c.zig | 532 ++---- src/codegen/llvm.zig | 193 +- src/codegen/spirv.zig | 5 + src/print_air.zig | 103 +- src/register_manager.zig | 4 + test/behavior/for.zig | 1 - test/behavior/var_args.zig | 26 + test/cases/aarch64-linux/conditional_branches.0.zig | 26 - test/cases/aarch64-linux/conditional_branches.1.zig | 25 - test/cases/aarch64-linux/hello_world_with_updates.0.zig | 31 - test/cases/aarch64-linux/hello_world_with_updates.1.zig | 36 - test/cases/aarch64-linux/hello_world_with_updates.2.zig | 21 - test/cases/aarch64-macos/hello_world_with_updates.0.zig | 5 - test/cases/aarch64-macos/hello_world_with_updates.1.zig | 6 - test/cases/aarch64-macos/hello_world_with_updates.2.zig | 19 - test/cases/aarch64-macos/hello_world_with_updates.3.zig | 16 - test/cases/aarch64-macos/hello_world_with_updates.4.zig | 22 - test/cases/aarch64-macos/hello_world_with_updates.5.zig | 16 - test/cases/aarch64-macos/hello_world_with_updates.6.zig | 18 - test/cases/arithmetic_operations.0.zig | 17 + test/cases/arithmetic_operations.1.zig | 16 + test/cases/arithmetic_operations.2.zig | 16 + test/cases/arithmetic_operations.3.zig | 16 + test/cases/arithmetic_operations.4.zig | 16 + test/cases/arithmetic_operations.5.zig | 15 + test/cases/arithmetic_operations.6.zig | 21 + test/cases/arm-linux/arithmetic_operations.0.zig | 21 - test/cases/arm-linux/arithmetic_operations.1.zig | 20 - test/cases/arm-linux/arithmetic_operations.2.zig | 20 - test/cases/arm-linux/arithmetic_operations.3.zig | 20 - test/cases/arm-linux/arithmetic_operations.4.zig | 20 - test/cases/arm-linux/arithmetic_operations.5.zig | 15 - test/cases/arm-linux/arithmetic_operations.6.zig | 21 - test/cases/arm-linux/errors.0.zig | 21 - test/cases/arm-linux/errors.1.zig | 24 - test/cases/arm-linux/errors.2.zig | 27 - test/cases/arm-linux/errors.3.zig | 12 - test/cases/arm-linux/function_pointers.zig | 44 - test/cases/arm-linux/hello_world_with_updates.0.zig | 32 - test/cases/arm-linux/hello_world_with_updates.1.zig | 37 - test/cases/arm-linux/hello_world_with_updates.2.zig | 22 - test/cases/arm-linux/parameters_and_return_values.0.zig | 28 - test/cases/arm-linux/parameters_and_return_values.1.zig | 14 - test/cases/arm-linux/print_u32s.zig | 40 - test/cases/arm-linux/spilling_registers.0.zig | 38 - test/cases/arm-linux/spilling_registers.1.zig | 37 - test/cases/assert_function.0.zig | 15 + test/cases/assert_function.1.zig | 17 + test/cases/assert_function.10.zig | 27 + test/cases/assert_function.11.zig | 66 + test/cases/assert_function.12.zig | 47 + test/cases/assert_function.13.zig | 19 + test/cases/assert_function.14.zig | 17 + test/cases/assert_function.15.zig | 10 + test/cases/assert_function.16.zig | 11 + test/cases/assert_function.17.zig | 11 + test/cases/assert_function.18.zig | 20 + test/cases/assert_function.2.zig | 21 + test/cases/assert_function.3.zig | 22 + test/cases/assert_function.4.zig | 15 + test/cases/assert_function.5.zig | 19 + test/cases/assert_function.6.zig | 9 + test/cases/assert_function.7.zig | 23 + test/cases/assert_function.8.zig | 20 + test/cases/assert_function.9.zig | 22 + test/cases/break_continue.0.zig | 2 +- test/cases/comptime_var.0.zig | 13 + test/cases/comptime_var.1.zig | 13 + test/cases/comptime_var.2.zig | 17 + test/cases/comptime_var.3.zig | 10 + test/cases/comptime_var.4.zig | 9 + test/cases/comptime_var.5.zig | 15 + test/cases/comptime_var.6.zig | 15 + test/cases/conditional_branches.0.zig | 23 + test/cases/conditional_branches.1.zig | 25 + test/cases/conditions.0.zig | 11 + test/cases/conditions.1.zig | 12 + test/cases/conditions.2.zig | 12 + test/cases/conditions.3.zig | 16 + test/cases/conditions.4.zig | 15 + test/cases/conditions.5.zig | 20 + test/cases/error_unions.0.zig | 15 + test/cases/error_unions.1.zig | 8 + test/cases/error_unions.2.zig | 8 + test/cases/error_unions.3.zig | 12 + test/cases/error_unions.4.zig | 12 + test/cases/error_unions.5.zig | 12 + test/cases/errors.0.zig | 15 + test/cases/errors.1.zig | 18 + test/cases/errors.2.zig | 27 + test/cases/errors.3.zig | 12 + test/cases/exit.zig | 5 + test/cases/function_pointers.zig | 30 + test/cases/hello_world_with_updates.0.zig | 6 + test/cases/hello_world_with_updates.1.zig | 6 + test/cases/hello_world_with_updates.2.zig | 19 + test/cases/hello_world_with_updates.3.zig | 16 + test/cases/hello_world_with_updates.4.zig | 22 + test/cases/hello_world_with_updates.5.zig | 16 + test/cases/hello_world_with_updates.6.zig | 20 + test/cases/large_add_function.zig | 4 +- test/cases/locals.0.zig | 14 + test/cases/locals.1.zig | 17 + test/cases/only_1_function_and_it_gets_updated.0.zig | 7 + test/cases/only_1_function_and_it_gets_updated.1.zig | 8 + test/cases/optionals.0.zig | 12 + test/cases/optionals.1.zig | 11 + test/cases/optionals.2.zig | 7 + test/cases/optionals.3.zig | 8 + test/cases/optionals.4.zig | 13 + test/cases/parameters_and_return_values.0.zig | 20 + test/cases/parameters_and_return_values.1.zig | 14 + test/cases/plan9/exit.zig | 5 - test/cases/plan9/hello_world_with_updates.0.zig | 28 - test/cases/plan9/hello_world_with_updates.1.zig | 11 - test/cases/pointers.0.zig | 14 + test/cases/pointers.1.zig | 18 + test/cases/print_u32s.zig | 28 + test/cases/recursive_fibonacci.zig | 2 +- test/cases/spilling_registers.0.zig | 38 + test/cases/spilling_registers.1.zig | 37 + test/cases/structs.0.zig | 10 + test/cases/structs.1.zig | 10 + test/cases/structs.2.zig | 9 + test/cases/structs.3.zig | 12 + test/cases/structs.4.zig | 11 + test/cases/switch.0.zig | 15 + test/cases/switch.1.zig | 14 + test/cases/switch.2.zig | 14 + test/cases/switch.3.zig | 15 + test/cases/wasm-wasi/conditions.0.zig | 11 - test/cases/wasm-wasi/conditions.1.zig | 12 - test/cases/wasm-wasi/conditions.2.zig | 12 - test/cases/wasm-wasi/conditions.3.zig | 16 - test/cases/wasm-wasi/conditions.4.zig | 15 - test/cases/wasm-wasi/conditions.5.zig | 20 - test/cases/wasm-wasi/error_unions.0.zig | 15 - test/cases/wasm-wasi/error_unions.1.zig | 8 - test/cases/wasm-wasi/error_unions.2.zig | 8 - test/cases/wasm-wasi/error_unions.3.zig | 12 - test/cases/wasm-wasi/error_unions.4.zig | 12 - test/cases/wasm-wasi/error_unions.5.zig | 12 - test/cases/wasm-wasi/locals.0.zig | 14 - test/cases/wasm-wasi/locals.1.zig | 17 - test/cases/wasm-wasi/optionals.0.zig | 12 - test/cases/wasm-wasi/optionals.1.zig | 11 - test/cases/wasm-wasi/optionals.2.zig | 7 - test/cases/wasm-wasi/optionals.3.zig | 8 - test/cases/wasm-wasi/optionals.4.zig | 13 - test/cases/wasm-wasi/pointers.0.zig | 14 - test/cases/wasm-wasi/pointers.1.zig | 18 - test/cases/wasm-wasi/structs.0.zig | 10 - test/cases/wasm-wasi/structs.1.zig | 10 - test/cases/wasm-wasi/structs.2.zig | 9 - test/cases/wasm-wasi/structs.3.zig | 12 - test/cases/wasm-wasi/structs.4.zig | 11 - test/cases/wasm-wasi/switch.0.zig | 15 - test/cases/wasm-wasi/switch.1.zig | 14 - test/cases/wasm-wasi/switch.2.zig | 14 - test/cases/wasm-wasi/switch.3.zig | 15 - test/cases/wasm-wasi/while_loops.0.zig | 12 - test/cases/wasm-wasi/while_loops.1.zig | 11 - test/cases/wasm-wasi/while_loops.2.zig | 12 - test/cases/while_loops.0.zig | 12 + test/cases/while_loops.1.zig | 11 + test/cases/while_loops.2.zig | 12 + test/cases/x86_64-linux/assert_function.0.zig | 15 - test/cases/x86_64-linux/assert_function.1.zig | 17 - test/cases/x86_64-linux/assert_function.10.zig | 27 - test/cases/x86_64-linux/assert_function.11.zig | 66 - test/cases/x86_64-linux/assert_function.12.zig | 47 - test/cases/x86_64-linux/assert_function.13.zig | 19 - test/cases/x86_64-linux/assert_function.14.zig | 17 - test/cases/x86_64-linux/assert_function.15.zig | 10 - test/cases/x86_64-linux/assert_function.16.zig | 11 - test/cases/x86_64-linux/assert_function.17.zig | 11 - test/cases/x86_64-linux/assert_function.18.zig | 35 - test/cases/x86_64-linux/assert_function.2.zig | 21 - test/cases/x86_64-linux/assert_function.3.zig | 22 - test/cases/x86_64-linux/assert_function.4.zig | 15 - test/cases/x86_64-linux/assert_function.5.zig | 19 - test/cases/x86_64-linux/assert_function.6.zig | 9 - test/cases/x86_64-linux/assert_function.7.zig | 28 - test/cases/x86_64-linux/assert_function.8.zig | 25 - test/cases/x86_64-linux/assert_function.9.zig | 22 - test/cases/x86_64-linux/comptime_var.0.zig | 12 - test/cases/x86_64-linux/comptime_var.1.zig | 13 - test/cases/x86_64-linux/comptime_var.2.zig | 22 - test/cases/x86_64-linux/comptime_var.3.zig | 10 - test/cases/x86_64-linux/comptime_var.4.zig | 9 - test/cases/x86_64-linux/comptime_var.5.zig | 15 - test/cases/x86_64-linux/comptime_var.6.zig | 20 - test/cases/x86_64-linux/hello_world_with_updates.0.zig | 8 - test/cases/x86_64-linux/hello_world_with_updates.1.zig | 6 - test/cases/x86_64-linux/hello_world_with_updates.2.zig | 32 - test/cases/x86_64-linux/hello_world_with_updates.3.zig | 20 - test/cases/x86_64-linux/hello_world_with_updates.4.zig | 20 - test/cases/x86_64-linux/hello_world_with_updates.5.zig | 22 - test/cases/x86_64-linux/only_1_function_and_it_gets_updated.0.zig | 13 - test/cases/x86_64-linux/only_1_function_and_it_gets_updated.1.zig | 12 - test/cases/x86_64-macos/assert_function.0.zig | 15 - test/cases/x86_64-macos/assert_function.1.zig | 17 - test/cases/x86_64-macos/assert_function.10.zig | 27 - test/cases/x86_64-macos/assert_function.11.zig | 66 - test/cases/x86_64-macos/assert_function.12.zig | 47 - test/cases/x86_64-macos/assert_function.13.zig | 19 - test/cases/x86_64-macos/assert_function.14.zig | 17 - test/cases/x86_64-macos/assert_function.15.zig | 10 - test/cases/x86_64-macos/assert_function.16.zig | 11 - test/cases/x86_64-macos/assert_function.17.zig | 11 - test/cases/x86_64-macos/assert_function.18.zig | 35 - test/cases/x86_64-macos/assert_function.2.zig | 21 - test/cases/x86_64-macos/assert_function.3.zig | 22 - test/cases/x86_64-macos/assert_function.4.zig | 15 - test/cases/x86_64-macos/assert_function.5.zig | 19 - test/cases/x86_64-macos/assert_function.6.zig | 9 - test/cases/x86_64-macos/assert_function.7.zig | 23 - test/cases/x86_64-macos/assert_function.8.zig | 20 - test/cases/x86_64-macos/assert_function.9.zig | 22 - test/cases/x86_64-macos/comptime_var.0.zig | 12 - test/cases/x86_64-macos/comptime_var.1.zig | 13 - test/cases/x86_64-macos/comptime_var.2.zig | 17 - test/cases/x86_64-macos/comptime_var.3.zig | 10 - test/cases/x86_64-macos/comptime_var.4.zig | 9 - test/cases/x86_64-macos/comptime_var.5.zig | 15 - test/cases/x86_64-macos/comptime_var.6.zig | 15 - test/cases/x86_64-macos/hello_world_with_updates.0.zig | 5 - test/cases/x86_64-macos/hello_world_with_updates.1.zig | 6 - test/cases/x86_64-macos/hello_world_with_updates.2.zig | 19 - test/cases/x86_64-macos/hello_world_with_updates.3.zig | 16 - test/cases/x86_64-macos/hello_world_with_updates.4.zig | 22 - test/cases/x86_64-macos/hello_world_with_updates.5.zig | 16 - test/cases/x86_64-macos/hello_world_with_updates.6.zig | 18 - test/cases/x86_64-windows/hello_world_with_updates.0.zig | 7 - test/cases/x86_64-windows/hello_world_with_updates.1.zig | 6 - test/cases/x86_64-windows/hello_world_with_updates.2.zig | 16 - test/tests.zig | 36 +- 249 files changed, 5004 insertions(+), 5878 deletions(-)