doc/langref.html.in | 76 +++++--
doc/langref/runtime_invalid_enum_cast.zig | 12 +-
doc/langref/test_comptime_invalid_enum_cast.zig | 4 +-
doc/langref/test_enums.zig | 22 +-
doc/langref/test_inline_else.zig | 4 +-
doc/langref/test_packed_struct_backing_int.zig | 21 ++
doc/langref/test_tagged_union_with_tag_values.zig | 4 +-
lib/std/meta.zig | 32 ++-
lib/std/zig/AstGen.zig | 18 ++
lib/std/zig/AstRlAnnotate.zig | 2 +
lib/std/zig/BuiltinFn.zig | 16 ++
lib/std/zig/Zir.zig | 30 ++-
src/Air.zig | 6 +
src/Air/Legalize.zig | 114 +++++++++-
src/Air/Liveness.zig | 1 +
src/Air/Liveness/Verify.zig | 1 +
src/Air/Verify.zig | 2 +-
src/Air/print.zig | 1 +
src/InternPool.zig | 1 +
src/Sema.zig | 320 +++++++++++++++++++++------
src/Sema/reinterpret.zig | 8 +-
src/Sema/type_resolution.zig | 2 +-
src/Type.zig | 54 ++---
src/Value.zig | 17 +-
src/Zcu/PerThread.zig | 35 ++-
src/codegen.zig | 2 +-
src/codegen/aarch64.zig | 6 +-
src/codegen/aarch64/Select.zig | 2 +
src/codegen/c.zig | 6 +-
src/codegen/c/type.zig | 3 +-
src/codegen/c/type/render_defs.zig | 4 +-
src/codegen/llvm.zig | 2 +-
src/codegen/llvm/FuncGen.zig | 29 ++-
src/codegen/riscv64/CodeGen.zig | 5 +-
src/codegen/sparc64/CodeGen.zig | 3 +-
src/codegen/spirv/CodeGen.zig | 21 +-
src/codegen/wasm/CodeGen.zig | 8 +-
src/codegen/x86_64/CodeGen.zig | 2 +
src/link/Wasm/Flush.zig | 2 +-
src/print_value.zig | 30 ++-
src/print_zir.zig | 14 ++
test/behavior.zig | 1 +
test/behavior/backing_int.zig | 378 ++++++++++++++++++++++++++++++++
test/behavior/enum.zig | 15 ++
test/behavior/packed-struct.zig | 31 ++-
test/behavior/packed-union.zig | 14 ++
test/behavior/switch.zig | 4 +-
test/behavior/type.zig | 12 +-
test/cases/compile_errors/backing_int_invalid_arg_type.zig | 38 ++++
test/cases/compile_errors/bitCast_with_invalid_array_element_type.zig | 23 --
test/cases/compile_errors/bitcast_invalid_types.zig | 205 +++++++++++++++++
test/cases/compile_errors/bitcast_to_enum_invalid_tag_value.zig | 16 ++
test/cases/compile_errors/empty_enum_from_backing_int.zig | 18 ++
test/cases/compile_errors/from_backing_int_invalid_dest_type.zig | 37 ++++
test/cases/compile_errors/from_backing_int_type_mismatch.zig | 23 ++
test/cases/compile_errors/from_backing_int_undef.zig | 22 ++
test/cases/compile_errors/invalid_non-exhaustive_enum_to_union.zig | 2 +-
test/cases/compile_errors/tagName_on_invalid_value_of_non-exhaustive_enum.zig | 2 +-
test/cases/safety/backing_int_no_matching_tag_value.zig | 25 +++
test/cases/safety/bitcast_to_enum_no_matching_tag_value.zig | 25 +++
60 files changed, 1578 insertions(+), 255 deletions(-)