doc/langref.html.in | 36 ++- lib/std/crypto/aes.zig | 38 +-- lib/std/crypto/blake2.zig | 11 +- lib/std/crypto/chacha20.zig | 61 +++-- lib/std/crypto/md5.zig | 3 +- lib/std/crypto/poly1305.zig | 29 ++- lib/std/crypto/sha1.zig | 3 +- lib/std/crypto/sha2.zig | 6 +- lib/std/crypto/sha3.zig | 5 +- lib/std/crypto/x25519.zig | 41 ++-- lib/std/fmt.zig | 3 +- lib/std/fs.zig | 2 +- lib/std/hash/auto_hash.zig | 12 +- lib/std/hash/siphash.zig | 6 +- lib/std/hash/wyhash.zig | 2 +- lib/std/json.zig | 23 +- lib/std/mem.zig | 113 ++++----- lib/std/meta.zig | 65 +++-- lib/std/meta/trait.zig | 12 +- lib/std/net.zig | 12 +- lib/std/os/windows.zig | 10 +- lib/std/rand.zig | 2 +- lib/std/unicode.zig | 20 +- src-self-hosted/stage2.zig | 2 +- src-self-hosted/translate_c.zig | 26 +- src/all_types.hpp | 6 + src/analyze.cpp | 38 ++- src/analyze.hpp | 2 +- src/codegen.cpp | 84 +++++-- src/ir.cpp | 415 +++++++++++++++++++++++++------- test/compare_output.zig | 2 +- test/compile_errors.zig | 16 +- test/runtime_safety.zig | 2 +- test/stage1/behavior/align.zig | 36 +-- test/stage1/behavior/cast.zig | 3 +- test/stage1/behavior/eval.zig | 2 +- test/stage1/behavior/misc.zig | 14 +- test/stage1/behavior/pointers.zig | 9 +- test/stage1/behavior/ptrcast.zig | 2 +- test/stage1/behavior/slice.zig | 159 +++++++++++- test/stage1/behavior/struct.zig | 4 +- 41 files changed, 906 insertions(+), 431 deletions(-)