lib/std/special/c.zig | 19 + lib/std/special/c_stage1.zig | 13 - lib/std/special/test_runner.zig | 5 +- src/Liveness.zig | 36 ++ src/arch/x86_64/CodeGen.zig | 807 +++++++++++++++++++++++++------- src/arch/x86_64/Emit.zig | 8 + src/arch/x86_64/Mir.zig | 5 +- src/codegen.zig | 120 ++++- src/link/Elf.zig | 1 + test/behavior.zig | 222 ++++----- test/behavior/align.zig | 6 - test/behavior/array.zig | 10 +- test/behavior/basic.zig | 6 - test/behavior/bitcast.zig | 38 ++ test/behavior/bugs/1076.zig | 5 + test/behavior/bugs/1442.zig | 3 + test/behavior/bugs/2692.zig | 5 + test/behavior/bugs/2889.zig | 5 + test/behavior/bugs/3046.zig | 6 +- test/behavior/bugs/3586.zig | 5 + test/behavior/bugs/4560.zig | 4 + test/behavior/bugs/4954.zig | 6 + test/behavior/bugs/624.zig | 4 + test/behavior/bugs/704.zig | 5 + test/behavior/byval_arg_var.zig | 5 + test/behavior/defer.zig | 13 + test/behavior/enum.zig | 114 +++++ test/behavior/error.zig | 48 ++ test/behavior/fn.zig | 71 +++ test/behavior/for.zig | 24 +- test/behavior/generics.zig | 43 +- test/behavior/if.zig | 20 + test/behavior/incomplete_struct_param_tld.zig | 3 + test/behavior/inttoptr.zig | 6 + test/behavior/member_func.zig | 6 + test/behavior/null.zig | 29 ++ test/behavior/pointers.zig | 19 + test/behavior/ref_var_in_if_after_if_2nd_switch_prong.zig | 5 + test/behavior/slice.zig | 1 - test/behavior/src.zig | 6 +- test/behavior/struct.zig | 12 +- test/behavior/this.zig | 7 + test/behavior/try.zig | 14 +- test/behavior/type_info.zig | 11 + test/behavior/undefined.zig | 11 + test/behavior/underscore.zig | 5 + test/behavior/union.zig | 140 ++++++ test/behavior/usingnamespace.zig | 19 + test/behavior/void.zig | 11 + test/behavior/while.zig | 49 ++ 50 files changed, 1717 insertions(+), 319 deletions(-)