build.zig | 30 +- doc/docgen.zig | 32 +- doc/langref.html.in | 42 +- lib/std/array_list.zig | 15 +- lib/std/bloom_filter.zig | 6 +- lib/std/build.zig | 55 +-- lib/std/child_process.zig | 6 +- lib/std/coff.zig | 6 +- lib/std/crypto/aes.zig | 4 +- lib/std/crypto/blake2.zig | 4 +- lib/std/crypto/chacha20.zig | 14 +- lib/std/crypto/gimli.zig | 8 +- lib/std/crypto/md5.zig | 2 +- lib/std/crypto/poly1305.zig | 2 +- lib/std/crypto/sha1.zig | 2 +- lib/std/crypto/sha2.zig | 4 +- lib/std/crypto/sha3.zig | 4 +- lib/std/crypto/test.zig | 4 +- lib/std/crypto/x25519.zig | 36 +- lib/std/debug.zig | 8 +- lib/std/elf.zig | 2 +- lib/std/event/fs.zig | 2 +- lib/std/event/loop.zig | 4 +- lib/std/fifo.zig | 10 +- lib/std/fmt.zig | 25 +- lib/std/fs.zig | 8 +- lib/std/fs/get_app_data_dir.zig | 6 +- lib/std/fs/path.zig | 122 +++--- lib/std/hash/cityhash.zig | 2 +- lib/std/hash/murmur.zig | 2 +- lib/std/hash_map.zig | 2 +- lib/std/http/headers.zig | 4 +- lib/std/io.zig | 2 +- lib/std/io/out_stream.zig | 10 +- lib/std/io/test.zig | 8 +- lib/std/mem.zig | 128 +++--- lib/std/meta/trait.zig | 2 +- lib/std/net.zig | 8 +- lib/std/os.zig | 6 +- lib/std/os/test.zig | 2 +- lib/std/os/windows.zig | 6 +- lib/std/packed_int_array.zig | 24 +- lib/std/pdb.zig | 4 +- lib/std/priority_queue.zig | 2 +- lib/std/process.zig | 16 +- lib/std/rand.zig | 2 +- lib/std/segmented_list.zig | 12 +- lib/std/sort.zig | 86 ++-- lib/std/unicode.zig | 12 +- lib/std/zig/tokenizer.zig | 122 +++--- src-self-hosted/arg.zig | 2 +- src-self-hosted/compilation.zig | 29 +- src-self-hosted/dep_tokenizer.zig | 4 +- src-self-hosted/introspect.zig | 4 +- src-self-hosted/libc_installation.zig | 6 +- src-self-hosted/link.zig | 2 +- src-self-hosted/main.zig | 14 +- src-self-hosted/stage1.zig | 4 +- src/all_types.hpp | 14 +- src/analyze.cpp | 29 +- src/codegen.cpp | 110 ++--- src/ir.cpp | 727 +++++++++++++++++--------------- src/ir.hpp | 4 + src/ir_print.cpp | 44 +- src/ir_print.hpp | 1 + src/util.hpp | 8 +- test/cli.zig | 26 +- test/compare_output.zig | 4 +- test/compile_errors.zig | 31 +- test/runtime_safety.zig | 4 +- test/stage1/behavior/array.zig | 44 +- test/stage1/behavior/async_fn.zig | 12 +- test/stage1/behavior/await_struct.zig | 2 +- test/stage1/behavior/bugs/1607.zig | 4 +- test/stage1/behavior/bugs/1914.zig | 4 +- test/stage1/behavior/cast.zig | 62 ++- test/stage1/behavior/error.zig | 27 ++ test/stage1/behavior/eval.zig | 6 +- test/stage1/behavior/for.zig | 10 +- test/stage1/behavior/generics.zig | 4 +- test/stage1/behavior/misc.zig | 6 +- test/stage1/behavior/optional.zig | 11 + test/stage1/behavior/ptrcast.zig | 2 +- test/stage1/behavior/shuffle.zig | 14 +- test/stage1/behavior/slice.zig | 6 +- test/stage1/behavior/struct.zig | 9 +- test/stage1/behavior/struct_contains_slice_of_itself.zig | 16 +- test/stage1/behavior/type.zig | 24 +- test/stage1/behavior/union.zig | 31 +- test/stage1/behavior/vector.zig | 54 +-- test/stage1/c_abi/build.zig | 2 +- test/stage1/c_abi/main.zig | 2 +- test/standalone/mix_o_files/build.zig | 2 +- test/standalone/shared_library/build.zig | 2 +- test/standalone/static_c_lib/build.zig | 2 +- test/tests.zig | 28 +- 96 files changed, 1230 insertions(+), 1148 deletions(-)