build.zig | 4 +- ci/appveyor/build_script.bat | 7 +- doc/docgen.zig | 29 +- doc/langref.html.in | 138 ++- example/cat/main.zig | 8 +- example/guess_number/main.zig | 2 +- example/hello_world/hello.zig | 2 +- example/mix_o_files/build.zig | 2 +- example/shared_library/build.zig | 2 +- src-self-hosted/main.zig | 18 +- src-self-hosted/module.zig | 11 +- src-self-hosted/parser.zig | 50 +- src/all_types.hpp | 68 +- src/analyze.cpp | 370 ++++--- src/analyze.hpp | 8 +- src/ast_render.cpp | 33 +- src/codegen.cpp | 232 +++-- src/codegen.hpp | 1 + src/ir.cpp | 1660 +++++++++++++++++++++++++++----- src/ir_print.cpp | 12 +- src/main.cpp | 8 + src/parser.cpp | 116 ++- src/tokenizer.cpp | 29 +- src/tokenizer.hpp | 2 + src/util.hpp | 19 +- src/zig_llvm.cpp | 4 + src/zig_llvm.h | 1 + std/array_list.zig | 14 +- std/base64.zig | 27 +- std/buf_map.zig | 4 +- std/buf_set.zig | 4 +- std/buffer.zig | 18 +- std/build.zig | 59 +- std/c/index.zig | 2 +- std/crypto/throughput_test.zig | 2 +- std/cstr.zig | 4 +- std/debug/failing_allocator.zig | 4 +- std/debug/index.zig | 104 +- std/elf.zig | 10 +- std/fmt/index.zig | 108 ++- std/hash_map.zig | 4 +- std/heap.zig | 12 +- std/io.zig | 388 ++++---- std/io_test.zig | 4 +- std/linked_list.zig | 4 +- std/math/index.zig | 44 +- std/mem.zig | 30 +- std/net.zig | 34 +- std/os/child_process.zig | 83 +- std/os/get_user_id.zig | 7 +- std/os/index.zig | 325 ++++--- std/os/linux/index.zig | 2 +- std/os/path.zig | 29 +- std/os/windows/util.zig | 68 +- std/special/bootstrap.zig | 4 +- std/special/build_file_template.zig | 2 +- std/special/build_runner.zig | 29 +- std/special/test_runner.zig | 2 +- std/unicode.zig | 20 +- test/cases/cast.zig | 34 +- test/cases/defer.zig | 4 +- test/cases/enum_with_members.zig | 2 +- test/cases/error.zig | 103 +- test/cases/ir_block_deps.zig | 6 +- test/cases/misc.zig | 8 +- test/cases/reflection.zig | 2 +- test/cases/switch.zig | 2 +- test/cases/switch_prong_err_enum.zig | 6 +- test/cases/switch_prong_implicit_cast.zig | 4 +- test/cases/try.zig | 7 +- test/cases/union.zig | 2 +- test/cases/while.zig | 10 +- test/compare_output.zig | 35 +- test/compile_errors.zig | 237 ++++- test/runtime_safety.zig | 74 +- test/standalone/brace_expansion/build.zig | 2 +- test/standalone/brace_expansion/main.zig | 22 +- test/standalone/issue_339/build.zig | 2 +- test/standalone/issue_339/test.zig | 2 +- test/standalone/pkg_import/build.zig | 2 +- test/standalone/pkg_import/test.zig | 2 +- test/standalone/use_alias/build.zig | 2 +- test/tests.zig | 13 +- 83 files changed, 3263 insertions(+), 1607 deletions(-)