lib/compiler_rt/int_to_float_test.zig | 1 + src/Air.zig | 97 ++++- src/AstGen.zig | 19 +- src/Liveness.zig | 48 ++- src/Module.zig | 70 +++- src/Sema.zig | 649 +++++++++++++++++++++++--------- src/Zir.zig | 5 + src/arch/aarch64/CodeGen.zig | 24 ++ src/arch/arm/CodeGen.zig | 24 ++ src/arch/riscv64/CodeGen.zig | 24 ++ src/arch/sparc64/CodeGen.zig | 24 ++ src/arch/wasm/CodeGen.zig | 24 ++ src/arch/wasm/abi.zig | 4 +- src/arch/x86_64/CodeGen.zig | 24 ++ src/codegen/c.zig | 42 ++- src/codegen/llvm.zig | 139 ++++--- src/codegen/llvm/bindings.zig | 3 + src/print_air.zig | 24 +- src/print_zir.zig | 1 + src/type.zig | 89 +++-- test/behavior/align.zig | 1 + test/behavior/bugs/1381.zig | 2 + test/behavior/cast.zig | 3 + test/behavior/math.zig | 1 + test/behavior/struct.zig | 3 + test/behavior/type.zig | 2 +- test/behavior/union.zig | 13 + test/cases/aarch64-macos/hello_world_with_updates.0.zig | 1 + test/cases/compile_errors/bad_alignCast_at_comptime.zig | 11 + test/cases/compile_errors/bogus_compile_var.zig | 1 + test/cases/compile_errors/bogus_method_call_on_slice.zig | 2 +- test/cases/compile_errors/cast_enum_literal_to_enum_but_it_doesnt_match.zig | 2 +- test/cases/compile_errors/directly_embedding_opaque_type_in_struct_and_union.zig | 2 +- test/cases/compile_errors/duplicate_field_in_anonymous_struct_literal.zig | 18 + test/cases/compile_errors/invalid_comptime_fields.zig | 21 ++ test/cases/compile_errors/invalid_store_to_comptime_field.zig | 41 ++ test/cases/compile_errors/method_call_with_first_arg_type_primitive.zig | 3 +- test/cases/compile_errors/method_call_with_first_arg_type_wrong_container.zig | 3 +- test/cases/compile_errors/stage1/obj/bad_alignCast_at_comptime.zig | 11 - test/cases/compile_errors/stage1/test/duplicate_field_in_anonymous_struct_literal.zig | 19 - test/cases/compile_errors/stage2/union_extra_field.zig | 2 +- test/cases/compile_errors/wrong_initializer_for_union_payload_of_type_type.zig | 3 +- test/cases/safety/@alignCast misaligned.zig | 10 +- test/cases/safety/@errSetCast error not present in destination.zig | 10 +- test/cases/safety/@floatToInt cannot fit - negative out of range.zig | 10 +- test/cases/safety/@floatToInt cannot fit - negative to unsigned.zig | 10 +- test/cases/safety/@floatToInt cannot fit - positive out of range.zig | 10 +- test/cases/safety/@intCast to u0.zig | 10 +- test/cases/safety/@intToPtr address zero to non-optional byte-aligned pointer.zig | 8 +- test/cases/safety/@intToPtr address zero to non-optional pointer.zig | 8 +- test/cases/safety/bad union field access.zig | 10 +- test/cases/safety/calling panic.zig | 4 +- test/cases/safety/cast integer to global error and no code matches.zig | 10 +- test/cases/safety/exact division failure - vectors.zig | 10 +- test/cases/safety/exact division failure.zig | 10 +- test/cases/safety/intToPtr with misaligned address.zig | 2 +- test/cases/safety/integer addition overflow.zig | 2 +- test/cases/safety/integer division by zero - vectors.zig | 10 +- test/cases/safety/integer division by zero.zig | 10 +- test/cases/safety/integer multiplication overflow.zig | 10 +- test/cases/safety/integer negation overflow.zig | 10 +- test/cases/safety/integer subtraction overflow.zig | 10 +- test/cases/safety/optional unwrap operator on C pointer.zig | 8 +- test/cases/safety/optional unwrap operator on null pointer.zig | 8 +- test/cases/safety/out of bounds slice access.zig | 10 +- test/cases/safety/remainder division by negative number.zig | 20 + test/cases/safety/signed integer not fitting in cast to unsigned integer - widening.zig | 10 +- test/cases/safety/signed integer not fitting in cast to unsigned integer.zig | 11 +- test/cases/safety/signed shift left overflow.zig | 10 +- test/cases/safety/signed shift right overflow.zig | 10 +- test/cases/safety/signed-unsigned vector cast.zig | 2 +- test/cases/safety/truncating vector cast.zig | 2 +- test/cases/safety/unreachable.zig | 15 + test/cases/safety/unsigned integer not fitting in cast to signed integer - same bit count.zig | 10 +- test/cases/safety/unsigned shift left overflow.zig | 10 +- test/cases/safety/unsigned shift right overflow.zig | 10 +- test/cases/safety/unsigned-signed vector cast.zig | 2 +- test/cases/safety/unwrap error.zig | 4 +- test/cases/safety/value does not fit in shortening cast - u0.zig | 10 +- test/cases/safety/value does not fit in shortening cast.zig | 10 +- test/cases/safety/vector integer addition overflow.zig | 10 +- test/cases/safety/vector integer multiplication overflow.zig | 10 +- test/cases/safety/vector integer negation overflow.zig | 10 +- test/cases/safety/vector integer subtraction overflow.zig | 10 +- test/cases/x86_64-linux/hello_world_with_updates.0.zig | 1 + test/cases/x86_64-macos/hello_world_with_updates.0.zig | 1 + test/stage2/cbe.zig | 2 +- 87 files changed, 1412 insertions(+), 468 deletions(-)