doc/langref.html.in | 52 ++--- lib/compiler_rt/atomics.zig | 12 +- lib/compiler_rt/emutls.zig | 4 +- lib/std/array_hash_map.zig | 4 +- lib/std/array_list.zig | 16 +- lib/std/builtin.zig | 2 + lib/std/c/darwin.zig | 2 +- lib/std/crypto/aegis.zig | 4 +- lib/std/crypto/aes_gcm.zig | 2 +- lib/std/crypto/tls/Client.zig | 2 +- lib/std/crypto/utils.zig | 6 +- lib/std/fifo.zig | 8 +- lib/std/hash/murmur.zig | 22 +- lib/std/hash_map.zig | 2 +- lib/std/heap/general_purpose_allocator.zig | 6 +- lib/std/math/big/int_test.zig | 8 +- lib/std/mem/Allocator.zig | 9 +- lib/std/multi_array_list.zig | 3 +- lib/std/net.zig | 6 +- lib/std/os.zig | 10 +- lib/std/os/linux.zig | 6 +- lib/std/os/windows.zig | 6 +- lib/std/zig/c_builtins.zig | 10 +- src/Air.zig | 48 +++- src/AstGen.zig | 14 +- src/BuiltinFn.zig | 4 +- src/Liveness.zig | 25 +-- src/Liveness/Verify.zig | 11 +- src/Sema.zig | 378 +++++++++++++++++++++++++------- src/Zir.zig | 16 +- src/arch/aarch64/CodeGen.zig | 20 +- src/arch/arm/CodeGen.zig | 20 +- src/arch/riscv64/CodeGen.zig | 20 +- src/arch/sparc64/CodeGen.zig | 20 +- src/arch/wasm/CodeGen.zig | 87 ++++++-- src/arch/x86_64/CodeGen.zig | 152 +++++++++++-- src/codegen/c.zig | 216 ++++++++++++------ src/codegen/llvm.zig | 251 +++++++++++++++------ src/print_air.zig | 28 +-- src/print_zir.zig | 30 +-- src/type.zig | 15 +- stage1/zig1.wasm | Bin 2444572 -> 2440105 bytes test/behavior/basic.zig | 76 ++++++- test/behavior/bugs/718.zig | 2 +- test/behavior/builtin_functions_returning_void_or_noreturn.zig | 4 +- test/behavior/struct.zig | 4 +- test/cases/compile_errors/incorrect_type_to_memset_memcpy.zig | 27 ++- test/cases/safety/@tagName on corrupted enum value.zig | 2 +- test/cases/safety/@tagName on corrupted union value.zig | 2 +- test/cases/safety/memcpy_alias.zig | 17 ++ test/cases/safety/memcpy_len_mismatch.zig | 17 ++ test/cases/safety/memset_array_undefined_bytes.zig | 18 ++ test/cases/safety/memset_array_undefined_large.zig | 18 ++ test/cases/safety/memset_slice_undefined_bytes.zig | 19 ++ test/cases/safety/memset_slice_undefined_large.zig | 19 ++ test/cases/safety/switch on corrupted enum value.zig | 2 +- test/cases/safety/switch on corrupted union value.zig | 2 +- 57 files changed, 1270 insertions(+), 516 deletions(-)