doc/langref.html.in | 36 +-- doc/langref/export_builtin.zig | 2 +- doc/langref/test_functions.zig | 4 +- lib/c.zig | 22 +- lib/compiler/aro/aro/Driver/Filesystem.zig | 8 +- lib/compiler/aro/aro/Parser.zig | 10 +- lib/compiler/resinator/main.zig | 8 +- lib/compiler_rt/aarch64_outline_atomics.zig | 200 ++++++------- lib/compiler_rt/absvdi2.zig | 2 +- lib/compiler_rt/absvsi2.zig | 2 +- lib/compiler_rt/absvti2.zig | 2 +- lib/compiler_rt/adddf3.zig | 4 +- lib/compiler_rt/addhf3.zig | 2 +- lib/compiler_rt/addo.zig | 6 +- lib/compiler_rt/addsf3.zig | 4 +- lib/compiler_rt/addtf3.zig | 6 +- lib/compiler_rt/addxf3.zig | 2 +- lib/compiler_rt/arm.zig | 44 +-- lib/compiler_rt/atomics.zig | 152 +++++----- lib/compiler_rt/aulldiv.zig | 4 +- lib/compiler_rt/aullrem.zig | 4 +- lib/compiler_rt/bcmp.zig | 2 +- lib/compiler_rt/bitreverse.zig | 6 +- lib/compiler_rt/bswap.zig | 6 +- lib/compiler_rt/ceil.zig | 14 +- lib/compiler_rt/clear_cache.zig | 2 +- lib/compiler_rt/cmp.zig | 12 +- lib/compiler_rt/cmpdf2.zig | 16 +- lib/compiler_rt/cmphf2.zig | 10 +- lib/compiler_rt/cmpsf2.zig | 16 +- lib/compiler_rt/cmptf2.zig | 32 +-- lib/compiler_rt/cmpxf2.zig | 10 +- lib/compiler_rt/common.zig | 2 +- lib/compiler_rt/cos.zig | 14 +- lib/compiler_rt/count0bits.zig | 18 +- lib/compiler_rt/divdc3.zig | 2 +- lib/compiler_rt/divdf3.zig | 4 +- lib/compiler_rt/divhc3.zig | 2 +- lib/compiler_rt/divhf3.zig | 2 +- lib/compiler_rt/divsc3.zig | 2 +- lib/compiler_rt/divsf3.zig | 4 +- lib/compiler_rt/divtc3.zig | 4 +- lib/compiler_rt/divtf3.zig | 6 +- lib/compiler_rt/divti3.zig | 4 +- lib/compiler_rt/divxc3.zig | 2 +- lib/compiler_rt/divxf3.zig | 2 +- lib/compiler_rt/emutls.zig | 2 +- lib/compiler_rt/exp.zig | 14 +- lib/compiler_rt/exp2.zig | 14 +- lib/compiler_rt/extenddftf2.zig | 6 +- lib/compiler_rt/extenddfxf2.zig | 2 +- lib/compiler_rt/extendhfdf2.zig | 2 +- lib/compiler_rt/extendhfsf2.zig | 6 +- lib/compiler_rt/extendhftf2.zig | 2 +- lib/compiler_rt/extendhfxf2.zig | 2 +- lib/compiler_rt/extendsfdf2.zig | 4 +- lib/compiler_rt/extendsftf2.zig | 6 +- lib/compiler_rt/extendsfxf2.zig | 2 +- lib/compiler_rt/extendxftf2.zig | 2 +- lib/compiler_rt/fabs.zig | 14 +- lib/compiler_rt/fixdfdi.zig | 4 +- lib/compiler_rt/fixdfsi.zig | 4 +- lib/compiler_rt/fixdfti.zig | 4 +- lib/compiler_rt/fixhfdi.zig | 2 +- lib/compiler_rt/fixhfsi.zig | 2 +- lib/compiler_rt/fixhfti.zig | 4 +- lib/compiler_rt/fixsfdi.zig | 4 +- lib/compiler_rt/fixsfsi.zig | 4 +- lib/compiler_rt/fixsfti.zig | 4 +- lib/compiler_rt/fixtfdi.zig | 6 +- lib/compiler_rt/fixtfsi.zig | 6 +- lib/compiler_rt/fixtfti.zig | 6 +- lib/compiler_rt/fixunsdfdi.zig | 4 +- lib/compiler_rt/fixunsdfsi.zig | 4 +- lib/compiler_rt/fixunsdfti.zig | 4 +- lib/compiler_rt/fixunshfdi.zig | 2 +- lib/compiler_rt/fixunshfsi.zig | 2 +- lib/compiler_rt/fixunshfti.zig | 4 +- lib/compiler_rt/fixunssfdi.zig | 4 +- lib/compiler_rt/fixunssfsi.zig | 4 +- lib/compiler_rt/fixunssfti.zig | 4 +- lib/compiler_rt/fixunstfdi.zig | 6 +- lib/compiler_rt/fixunstfsi.zig | 6 +- lib/compiler_rt/fixunstfti.zig | 6 +- lib/compiler_rt/fixunsxfdi.zig | 2 +- lib/compiler_rt/fixunsxfsi.zig | 2 +- lib/compiler_rt/fixunsxfti.zig | 4 +- lib/compiler_rt/fixxfdi.zig | 2 +- lib/compiler_rt/fixxfsi.zig | 2 +- lib/compiler_rt/fixxfti.zig | 4 +- lib/compiler_rt/floatdidf.zig | 4 +- lib/compiler_rt/floatdihf.zig | 2 +- lib/compiler_rt/floatdisf.zig | 4 +- lib/compiler_rt/floatditf.zig | 6 +- lib/compiler_rt/floatdixf.zig | 2 +- lib/compiler_rt/floatsidf.zig | 4 +- lib/compiler_rt/floatsihf.zig | 2 +- lib/compiler_rt/floatsisf.zig | 4 +- lib/compiler_rt/floatsitf.zig | 6 +- lib/compiler_rt/floatsixf.zig | 2 +- lib/compiler_rt/floattidf.zig | 4 +- lib/compiler_rt/floattihf.zig | 4 +- lib/compiler_rt/floattisf.zig | 4 +- lib/compiler_rt/floattitf.zig | 6 +- lib/compiler_rt/floattixf.zig | 4 +- lib/compiler_rt/floatundidf.zig | 4 +- lib/compiler_rt/floatundihf.zig | 2 +- lib/compiler_rt/floatundisf.zig | 4 +- lib/compiler_rt/floatunditf.zig | 6 +- lib/compiler_rt/floatundixf.zig | 2 +- lib/compiler_rt/floatunsidf.zig | 4 +- lib/compiler_rt/floatunsihf.zig | 2 +- lib/compiler_rt/floatunsisf.zig | 4 +- lib/compiler_rt/floatunsitf.zig | 6 +- lib/compiler_rt/floatunsixf.zig | 2 +- lib/compiler_rt/floatuntidf.zig | 4 +- lib/compiler_rt/floatuntihf.zig | 4 +- lib/compiler_rt/floatuntisf.zig | 4 +- lib/compiler_rt/floatuntitf.zig | 6 +- lib/compiler_rt/floatuntixf.zig | 4 +- lib/compiler_rt/floor.zig | 14 +- lib/compiler_rt/fma.zig | 14 +- lib/compiler_rt/fmax.zig | 14 +- lib/compiler_rt/fmin.zig | 14 +- lib/compiler_rt/fmod.zig | 14 +- lib/compiler_rt/gedf2.zig | 8 +- lib/compiler_rt/gehf2.zig | 4 +- lib/compiler_rt/gesf2.zig | 8 +- lib/compiler_rt/getf2.zig | 8 +- lib/compiler_rt/gexf2.zig | 4 +- lib/compiler_rt/int.zig | 30 +- lib/compiler_rt/log.zig | 14 +- lib/compiler_rt/log10.zig | 14 +- lib/compiler_rt/log2.zig | 14 +- lib/compiler_rt/memcmp.zig | 2 +- lib/compiler_rt/memcpy.zig | 2 +- lib/compiler_rt/memmove.zig | 2 +- lib/compiler_rt/memset.zig | 4 +- lib/compiler_rt/modti3.zig | 4 +- lib/compiler_rt/mulXi3.zig | 10 +- lib/compiler_rt/muldc3.zig | 2 +- lib/compiler_rt/muldf3.zig | 4 +- lib/compiler_rt/mulhc3.zig | 2 +- lib/compiler_rt/mulhf3.zig | 2 +- lib/compiler_rt/mulo.zig | 6 +- lib/compiler_rt/mulsc3.zig | 2 +- lib/compiler_rt/mulsf3.zig | 4 +- lib/compiler_rt/multc3.zig | 4 +- lib/compiler_rt/multf3.zig | 6 +- lib/compiler_rt/mulxc3.zig | 2 +- lib/compiler_rt/mulxf3.zig | 2 +- lib/compiler_rt/negXi2.zig | 6 +- lib/compiler_rt/negdf2.zig | 4 +- lib/compiler_rt/neghf2.zig | 2 +- lib/compiler_rt/negsf2.zig | 4 +- lib/compiler_rt/negtf2.zig | 4 +- lib/compiler_rt/negv.zig | 6 +- lib/compiler_rt/negxf2.zig | 2 +- lib/compiler_rt/os_version_check.zig | 2 +- lib/compiler_rt/parity.zig | 6 +- lib/compiler_rt/popcount.zig | 6 +- lib/compiler_rt/powiXf2.zig | 12 +- lib/compiler_rt/round.zig | 14 +- lib/compiler_rt/shift.zig | 24 +- lib/compiler_rt/sin.zig | 14 +- lib/compiler_rt/sincos.zig | 14 +- lib/compiler_rt/sqrt.zig | 14 +- lib/compiler_rt/ssp.zig | 20 +- lib/compiler_rt/stack_probe.zig | 12 +- lib/compiler_rt/subdf3.zig | 4 +- lib/compiler_rt/subhf3.zig | 2 +- lib/compiler_rt/subo.zig | 6 +- lib/compiler_rt/subsf3.zig | 4 +- lib/compiler_rt/subtf3.zig | 6 +- lib/compiler_rt/subxf3.zig | 2 +- lib/compiler_rt/tan.zig | 14 +- lib/compiler_rt/trunc.zig | 14 +- lib/compiler_rt/truncdfhf2.zig | 4 +- lib/compiler_rt/truncdfsf2.zig | 4 +- lib/compiler_rt/truncsfhf2.zig | 6 +- lib/compiler_rt/trunctfdf2.zig | 6 +- lib/compiler_rt/trunctfhf2.zig | 2 +- lib/compiler_rt/trunctfsf2.zig | 6 +- lib/compiler_rt/trunctfxf2.zig | 2 +- lib/compiler_rt/truncxfdf2.zig | 2 +- lib/compiler_rt/truncxfhf2.zig | 2 +- lib/compiler_rt/truncxfsf2.zig | 2 +- lib/compiler_rt/udivmodei4.zig | 4 +- lib/compiler_rt/udivmodti4.zig | 4 +- lib/compiler_rt/udivti3.zig | 4 +- lib/compiler_rt/umodti3.zig | 4 +- lib/compiler_rt/unorddf2.zig | 4 +- lib/compiler_rt/unordhf2.zig | 2 +- lib/compiler_rt/unordsf2.zig | 4 +- lib/compiler_rt/unordtf2.zig | 4 +- lib/compiler_rt/unordxf2.zig | 2 +- lib/std/Thread/Futex.zig | 8 +- lib/std/Thread/Mutex.zig | 2 +- lib/std/Thread/ResetEvent.zig | 2 +- lib/std/builtin.zig | 33 ++- lib/std/c.zig | 2 +- lib/std/debug.zig | 6 +- lib/std/fmt/parse_float/convert_slow.zig | 2 +- lib/std/hash/xxhash.zig | 12 +- lib/std/hash_map.zig | 2 +- lib/std/heap/WasmPageAllocator.zig | 2 +- lib/std/log.zig | 2 +- lib/std/once.zig | 2 +- lib/std/os/emscripten.zig | 4 +- lib/std/os/linux.zig | 2 +- lib/std/posix.zig | 2 +- lib/std/sort/pdq.zig | 4 +- lib/std/start.zig | 26 +- lib/std/zig/AstGen.zig | 233 +++++++-------- lib/std/zig/AstRlAnnotate.zig | 5 +- lib/std/zig/BuiltinFn.zig | 18 +- lib/std/zig/Parse.zig | 12 +- lib/std/zig/Zir.zig | 35 +-- src/Air.zig | 115 +++++++- src/Air/types_resolved.zig | 31 +- src/Compilation.zig | 8 +- src/InternPool.zig | 35 ++- src/Liveness.zig | 36 +-- src/Liveness/Verify.zig | 33 +-- src/Sema.zig | 493 +++++++++++++++++++++----------- src/Zcu/PerThread.zig | 2 + src/arch/aarch64/CodeGen.zig | 42 ++- src/arch/aarch64/Emit.zig | 2 +- src/arch/arm/CodeGen.zig | 42 ++- src/arch/arm/Emit.zig | 2 +- src/arch/riscv64/CodeGen.zig | 43 ++- src/arch/riscv64/Lower.zig | 2 +- src/arch/sparc64/CodeGen.zig | 4 +- src/arch/sparc64/Emit.zig | 2 +- src/arch/wasm/CodeGen.zig | 36 ++- src/arch/wasm/Emit.zig | 2 +- src/arch/x86_64/CodeGen.zig | 42 ++- src/arch/x86_64/Lower.zig | 2 +- src/codegen/c.zig | 45 ++- src/codegen/llvm.zig | 235 ++++++++++----- src/codegen/llvm/Builder.zig | 417 ++++++++++++++++++++------- src/codegen/llvm/ir.zig | 227 +++++++++++++-- src/codegen/spirv.zig | 50 ++-- src/crash_report.zig | 2 +- src/print_air.zig | 46 +-- src/print_zir.zig | 17 +- stage1/zig1.wasm | Bin 2730397 -> 2786306 bytes test/behavior.zig | 1 + test/behavior/basic.zig | 89 +++++- test/behavior/builtin_functions_returning_void_or_noreturn.zig | 3 +- test/behavior/export_builtin.zig | 32 +-- test/behavior/export_c_keywords.zig | 24 +- test/behavior/generics.zig | 2 +- test/cases/compile_errors/@export_with_undeclared_identifier.zig | 9 - test/cases/compile_errors/export_with_empty_name_string.zig | 4 +- test/cases/compile_errors/exported_enum_without_explicit_integer_tag_type.zig | 4 +- test/cases/compile_errors/exporting_primitive_values.zig | 29 -- test/cases/compile_errors/function-only_builtins_outside_function.zig | 4 +- test/cases/compile_errors/invalid_branch_hint.zig | 41 +++ test/cases/compile_errors/missing_member_in_namespace_export.zig | 10 - test/cases/compile_errors/wrong_types_given_to_export.zig | 4 +- test/link/elf.zig | 4 +- test/link/macho.zig | 4 +- test/standalone/global_linkage/obj1.zig | 4 +- test/standalone/global_linkage/obj2.zig | 4 +- tools/gen_outline_atomics.zig | 2 +- 266 files changed, 2443 insertions(+), 1808 deletions(-)