@zigc/lib 0.17.0-dev.27 → 0.17.0-dev.292
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/c/fcntl.zig +6 -1
- package/c/inttypes.zig +0 -10
- package/c/math.zig +52 -112
- package/c/pthread.zig +57 -0
- package/c/search.zig +1 -27
- package/c/stdlib/drand48.zig +0 -57
- package/c/stdlib.zig +31 -121
- package/c/string.zig +20 -7
- package/c/strings.zig +0 -38
- package/c/unistd.zig +27 -26
- package/c/wchar.zig +10 -0
- package/c.zig +2 -2
- package/compiler/aro/aro/CodeGen.zig +7 -8
- package/compiler/aro/aro/Compilation.zig +17 -17
- package/compiler/aro/aro/Driver.zig +14 -13
- package/compiler/aro/aro/Parser.zig +20 -15
- package/compiler/aro/aro/Pragma.zig +3 -2
- package/compiler/aro/aro/Preprocessor.zig +9 -6
- package/compiler/aro/aro/pragmas/message.zig +3 -2
- package/compiler/aro/aro/text_literal.zig +3 -2
- package/compiler/aro/assembly_backend/x86_64.zig +4 -4
- package/compiler/build_runner.zig +2 -4
- package/compiler/reduce/Walk.zig +8 -13
- package/compiler/resinator/compile.zig +1 -1
- package/compiler/resinator/cvtres.zig +4 -4
- package/compiler/resinator/errors.zig +7 -7
- package/compiler/resinator/ico.zig +4 -4
- package/compiler/resinator/parse.zig +2 -2
- package/compiler/resinator/res.zig +1 -1
- package/compiler/std-docs.zig +1 -1
- package/compiler/test_runner.zig +1 -1
- package/compiler/translate-c/MacroTranslator.zig +1 -1
- package/compiler/translate-c/Translator.zig +6 -2
- package/compiler/translate-c/ast.zig +16 -23
- package/compiler/translate-c/main.zig +1 -1
- package/compiler_rt/addf3.zig +1 -1
- package/compiler_rt/arm.zig +3 -3
- package/compiler_rt/atomics.zig +1 -1
- package/compiler_rt/comparef.zig +3 -3
- package/compiler_rt/cos.zig +1 -3
- package/compiler_rt/count0bits.zig +1 -1
- package/compiler_rt/divdf3.zig +2 -2
- package/compiler_rt/divsf3.zig +1 -1
- package/compiler_rt/divtf3.zig +1 -1
- package/compiler_rt/divxf3.zig +1 -1
- package/compiler_rt/exp.zig +0 -2
- package/compiler_rt/exp2.zig +0 -2
- package/compiler_rt/extendf.zig +5 -5
- package/compiler_rt/fabs.zig +1 -3
- package/compiler_rt/float_from_int.zig +3 -4
- package/compiler_rt/fma.zig +0 -2
- package/compiler_rt/fmax.zig +1 -3
- package/compiler_rt/fmin.zig +1 -3
- package/compiler_rt/fmod.zig +2 -4
- package/compiler_rt/limb64.zig +3 -2
- package/compiler_rt/log.zig +0 -2
- package/compiler_rt/log10.zig +0 -2
- package/compiler_rt/log2.zig +0 -2
- package/compiler_rt/mulf3.zig +2 -2
- package/compiler_rt/rem_pio2l.zig +1 -1
- package/compiler_rt/round.zig +0 -2
- package/compiler_rt/sin.zig +1 -3
- package/compiler_rt/sincos.zig +1 -3
- package/compiler_rt/sqrt.zig +0 -2
- package/compiler_rt/ssp.zig +2 -2
- package/compiler_rt/tan.zig +1 -3
- package/compiler_rt/trunc.zig +0 -2
- package/compiler_rt/truncf.zig +3 -3
- package/compiler_rt/trunctfhf2.zig +3 -0
- package/compiler_rt.zig +5 -26
- package/docs/wasm/Walk.zig +1 -3
- package/docs/wasm/html_render.zig +1 -2
- package/docs/wasm/markdown/Parser.zig +16 -20
- package/fuzzer.zig +2 -0
- package/include/__clang_spirv_builtins.h +12 -12
- package/include/__float_float.h +176 -0
- package/include/__float_header_macro.h +12 -0
- package/include/__float_infinity_nan.h +20 -0
- package/include/amo.h +131 -0
- package/include/amxavx512intrin.h +215 -1
- package/include/amxintrin.h +0 -2
- package/include/arm_acle.h +37 -27
- package/include/arm_neon.h +218 -82
- package/include/arm_sme.h +8 -8
- package/include/arm_sve.h +4162 -3782
- package/include/avx10_2_512bf16intrin.h +19 -12
- package/include/avx10_2_512convertintrin.h +1 -1
- package/include/avx10_2_512niintrin.h +31 -31
- package/include/avx10_2_512satcvtdsintrin.h +1 -1
- package/include/avx10_2bf16intrin.h +54 -45
- package/include/avx10_2convertintrin.h +2 -2
- package/include/avx10_2copyintrin.h +1 -1
- package/include/avx10_2niintrin.h +14 -14
- package/include/avx10_2satcvtdsintrin.h +2 -2
- package/include/avx2intrin.h +275 -377
- package/include/avx512bf16intrin.h +25 -16
- package/include/avx512bitalgintrin.h +19 -30
- package/include/avx512bwintrin.h +386 -505
- package/include/avx512cdintrin.h +42 -55
- package/include/avx512dqintrin.h +132 -161
- package/include/avx512fintrin.h +1015 -1424
- package/include/avx512fp16intrin.h +112 -110
- package/include/avx512ifmaintrin.h +32 -34
- package/include/avx512ifmavlintrin.h +73 -46
- package/include/avx512vbmi2intrin.h +43 -32
- package/include/avx512vbmiintrin.h +19 -27
- package/include/avx512vbmivlintrin.h +35 -49
- package/include/avx512vlbf16intrin.h +32 -22
- package/include/avx512vlbitalgintrin.h +37 -53
- package/include/avx512vlbwintrin.h +470 -573
- package/include/avx512vlcdintrin.h +74 -102
- package/include/avx512vldqintrin.h +110 -127
- package/include/avx512vlfp16intrin.h +130 -111
- package/include/avx512vlintrin.h +945 -1299
- package/include/avx512vlvbmi2intrin.h +78 -63
- package/include/avx512vlvnniintrin.h +21 -18
- package/include/avx512vlvp2intersectintrin.h +2 -2
- package/include/avx512vnniintrin.h +10 -10
- package/include/avx512vp2intersectintrin.h +1 -2
- package/include/avx512vpopcntdqintrin.h +8 -10
- package/include/avx512vpopcntdqvlintrin.h +17 -15
- package/include/avxifmaintrin.h +16 -0
- package/include/avxintrin.h +165 -241
- package/include/avxvnniint16intrin.h +118 -99
- package/include/avxvnniint8intrin.h +56 -32
- package/include/avxvnniintrin.h +16 -8
- package/include/cpuid.h +101 -4
- package/include/emmintrin.h +168 -168
- package/include/f16cintrin.h +23 -9
- package/include/float.h +16 -155
- package/include/fma4intrin.h +98 -96
- package/include/fmaintrin.h +96 -66
- package/include/gfniintrin.h +21 -16
- package/include/hexagon_types.h +23 -20
- package/include/hvx_hexagon_protos.h +649 -860
- package/include/immintrin.h +0 -12
- package/include/intrin.h +4 -0
- package/include/lasxintrin.h +113 -0
- package/include/llvm_libc_wrappers/assert.h +3 -5
- package/include/llvm_libc_wrappers/ctype.h +3 -115
- package/include/llvm_libc_wrappers/inttypes.h +3 -5
- package/include/llvm_libc_wrappers/stdio.h +10 -38
- package/include/llvm_libc_wrappers/stdlib.h +3 -24
- package/include/llvm_libc_wrappers/string.h +2 -70
- package/include/llvm_libc_wrappers/time.h +4 -10
- package/include/mmintrin.h +188 -257
- package/include/module.modulemap +23 -4
- package/include/movrs_avx10_2_512intrin.h +2 -2
- package/include/movrs_avx10_2intrin.h +4 -4
- package/include/pmmintrin.h +12 -24
- package/include/ptrauth.h +16 -2
- package/include/riscv_mips.h +34 -0
- package/include/riscv_nds.h +89 -0
- package/include/sifive_vector.h +58 -2
- package/include/sm4evexintrin.h +2 -2
- package/include/smmintrin.h +77 -59
- package/include/spirvintrin.h +194 -0
- package/include/stddefer.h +19 -0
- package/include/tmmintrin.h +116 -147
- package/include/vaesintrin.h +1 -2
- package/include/xmmintrin.h +44 -70
- package/include/xopintrin.h +20 -10
- package/libc/include/aarch64-linux-any/asm/hwcap.h +1 -0
- package/libc/include/aarch64-linux-any/asm/unistd_64.h +1 -0
- package/libc/include/any-linux-any/asm-generic/errno.h +2 -0
- package/libc/include/any-linux-any/asm-generic/unistd.h +4 -1
- package/libc/include/any-linux-any/drm/amdgpu_drm.h +20 -6
- package/libc/include/any-linux-any/drm/amdxdna_accel.h +8 -0
- package/libc/include/any-linux-any/drm/drm_fourcc.h +6 -6
- package/libc/include/any-linux-any/drm/panfrost_drm.h +75 -1
- package/libc/include/any-linux-any/drm/panthor_drm.h +154 -3
- package/libc/include/any-linux-any/drm/rocket_accel.h +74 -24
- package/libc/include/any-linux-any/drm/xe_drm.h +89 -6
- package/libc/include/any-linux-any/linux/android/binder.h +1 -1
- package/libc/include/any-linux-any/linux/bpf.h +28 -0
- package/libc/include/any-linux-any/linux/btrfs.h +1 -0
- package/libc/include/any-linux-any/linux/btrfs_tree.h +32 -2
- package/libc/include/any-linux-any/linux/dma-buf.h +1 -0
- package/libc/include/any-linux-any/linux/dpll.h +1 -0
- package/libc/include/any-linux-any/linux/elf.h +2 -0
- package/libc/include/any-linux-any/linux/ethtool.h +21 -5
- package/libc/include/any-linux-any/linux/fs.h +1 -0
- package/libc/include/any-linux-any/linux/hyperv.h +1 -1
- package/libc/include/any-linux-any/linux/idxd.h +134 -134
- package/libc/include/any-linux-any/linux/if_alg.h +1 -1
- package/libc/include/any-linux-any/linux/if_link.h +1 -0
- package/libc/include/any-linux-any/linux/input-event-codes.h +4 -0
- package/libc/include/any-linux-any/linux/io_uring/bpf_filter.h +68 -0
- package/libc/include/any-linux-any/linux/io_uring/query.h +5 -1
- package/libc/include/any-linux-any/linux/io_uring.h +33 -2
- package/libc/include/any-linux-any/linux/iommufd.h +39 -0
- package/libc/include/any-linux-any/linux/kfd_ioctl.h +13 -3
- package/libc/include/any-linux-any/linux/kfd_sysfs.h +2 -1
- package/libc/include/any-linux-any/linux/kvm.h +30 -6
- package/libc/include/any-linux-any/linux/landlock.h +22 -8
- package/libc/include/any-linux-any/linux/magic.h +1 -0
- package/libc/include/any-linux-any/linux/mempolicy.h +3 -0
- package/libc/include/any-linux-any/linux/mount.h +11 -2
- package/libc/include/any-linux-any/linux/mptcp_pm.h +1 -1
- package/libc/include/any-linux-any/linux/mshv.h +2 -0
- package/libc/include/any-linux-any/linux/netfilter_bridge.h +5 -4
- package/libc/include/any-linux-any/linux/netfilter_ipv4.h +4 -5
- package/libc/include/any-linux-any/linux/netfilter_ipv6.h +3 -4
- package/libc/include/any-linux-any/linux/nfs.h +1 -1
- package/libc/include/any-linux-any/linux/nfsd_netlink.h +1 -0
- package/libc/include/any-linux-any/linux/nilfs2_api.h +2 -2
- package/libc/include/any-linux-any/linux/nilfs2_ondisk.h +97 -66
- package/libc/include/any-linux-any/linux/nl80211.h +104 -3
- package/libc/include/any-linux-any/linux/pci.h +7 -0
- package/libc/include/any-linux-any/linux/pci_regs.h +65 -6
- package/libc/include/any-linux-any/linux/pcitest.h +1 -0
- package/libc/include/any-linux-any/linux/perf_event.h +24 -3
- package/libc/include/any-linux-any/linux/pkt_sched.h +1 -0
- package/libc/include/any-linux-any/linux/prctl.h +30 -0
- package/libc/include/any-linux-any/linux/rseq.h +62 -5
- package/libc/include/any-linux-any/linux/shm.h +0 -1
- package/libc/include/any-linux-any/linux/stddef.h +4 -0
- package/libc/include/any-linux-any/linux/sysctl.h +1 -2
- package/libc/include/any-linux-any/linux/taskstats.h +12 -1
- package/libc/include/any-linux-any/linux/tcp.h +23 -3
- package/libc/include/any-linux-any/linux/typelimits.h +8 -0
- package/libc/include/any-linux-any/linux/ublk_cmd.h +120 -1
- package/libc/include/any-linux-any/linux/v4l2-controls.h +63 -0
- package/libc/include/any-linux-any/linux/vbox_vmmdev_types.h +2 -2
- package/libc/include/any-linux-any/linux/vduse.h +80 -5
- package/libc/include/any-linux-any/linux/version.h +3 -3
- package/libc/include/any-linux-any/linux/vfio.h +4 -0
- package/libc/include/any-linux-any/linux/videodev2.h +3 -0
- package/libc/include/any-linux-any/linux/virtio_ring.h +1 -2
- package/libc/include/any-linux-any/linux/vmclock-abi.h +20 -0
- package/libc/include/any-linux-any/rdma/bnxt_re-abi.h +16 -0
- package/libc/include/any-linux-any/rdma/ib_user_ioctl_cmds.h +16 -0
- package/libc/include/any-linux-any/rdma/mana-abi.h +3 -0
- package/libc/include/any-linux-any/scsi/scsi_bsg_ufs.h +8 -9
- package/libc/include/any-linux-any/sound/sof/tokens.h +6 -0
- package/libc/include/arc-linux-any/asm/swab.h +0 -63
- package/libc/include/arc-linux-any/asm/unistd_32.h +1 -0
- package/libc/include/arm-linux-any/asm/ptrace.h +0 -9
- package/libc/include/arm-linux-any/asm/unistd-eabi.h +1 -0
- package/libc/include/arm-linux-any/asm/unistd-oabi.h +1 -0
- package/libc/include/csky-linux-any/asm/unistd_32.h +1 -0
- package/libc/include/hexagon-linux-any/asm/unistd_32.h +1 -0
- package/libc/include/loongarch-linux-any/asm/hwcap.h +1 -0
- package/libc/include/loongarch-linux-any/asm/kvm.h +1 -0
- package/libc/include/loongarch-linux-any/asm/kvm_para.h +1 -0
- package/libc/include/loongarch-linux-any/asm/unistd_32.h +2 -0
- package/libc/include/loongarch-linux-any/asm/unistd_64.h +2 -0
- package/libc/include/m68k-linux-any/asm/unistd_32.h +1 -0
- package/libc/include/mips-linux-any/asm/errno.h +2 -0
- package/libc/include/mips-linux-any/asm/unistd_n32.h +1 -0
- package/libc/include/mips-linux-any/asm/unistd_n64.h +1 -0
- package/libc/include/mips-linux-any/asm/unistd_o32.h +1 -0
- package/libc/include/powerpc-linux-any/asm/unistd_32.h +1 -0
- package/libc/include/powerpc-linux-any/asm/unistd_64.h +1 -0
- package/libc/include/riscv-linux-any/asm/hwprobe.h +4 -0
- package/libc/include/riscv-linux-any/asm/kvm.h +3 -0
- package/libc/include/riscv-linux-any/asm/ptrace.h +37 -0
- package/libc/include/riscv-linux-any/asm/sigcontext.h +1 -0
- package/libc/include/riscv-linux-any/asm/unistd_32.h +1 -0
- package/libc/include/riscv-linux-any/asm/unistd_64.h +1 -0
- package/libc/include/s390x-linux-any/asm/unistd_64.h +1 -0
- package/libc/include/sparc-linux-any/asm/errno.h +2 -0
- package/libc/include/sparc-linux-any/asm/ioctls.h +4 -4
- package/libc/include/sparc-linux-any/asm/unistd_32.h +2 -0
- package/libc/include/sparc-linux-any/asm/unistd_64.h +2 -0
- package/libc/include/x86-linux-any/asm/auxvec.h +0 -4
- package/libc/include/x86-linux-any/asm/kvm.h +13 -8
- package/libc/include/x86-linux-any/asm/svm.h +16 -16
- package/libc/include/x86-linux-any/asm/unistd_32.h +1 -0
- package/libc/include/x86-linux-any/asm/unistd_64.h +1 -0
- package/libc/include/x86-linux-any/asm/unistd_x32.h +1 -0
- package/libc/include/xtensa-linux-any/asm/unistd_32.h +1 -0
- package/libc/musl/arch/mipsn32/syscall_arch.h +35 -32
- package/libcxx/include/__algorithm/all_of.h +11 -5
- package/libcxx/include/__algorithm/comp.h +4 -0
- package/libcxx/include/__algorithm/copy.h +28 -147
- package/libcxx/include/__algorithm/copy_backward.h +9 -24
- package/libcxx/include/__algorithm/copy_n.h +50 -16
- package/libcxx/include/__algorithm/count.h +2 -2
- package/libcxx/include/__algorithm/equal.h +43 -55
- package/libcxx/include/__algorithm/fill.h +26 -8
- package/libcxx/include/__algorithm/fill_n.h +32 -46
- package/libcxx/include/__algorithm/find.h +96 -39
- package/libcxx/include/__algorithm/find_end.h +105 -0
- package/libcxx/include/__algorithm/for_each.h +18 -24
- package/libcxx/include/__algorithm/for_each_n.h +20 -47
- package/libcxx/include/__algorithm/for_each_n_segment.h +1 -1
- package/libcxx/include/__algorithm/for_each_segment.h +26 -0
- package/libcxx/include/__algorithm/generate.h +4 -2
- package/libcxx/include/__algorithm/generate_n.h +19 -6
- package/libcxx/include/__algorithm/is_permutation.h +4 -4
- package/libcxx/include/__algorithm/iterator_operations.h +3 -0
- package/libcxx/include/__algorithm/lexicographical_compare.h +2 -2
- package/libcxx/include/__algorithm/lexicographical_compare_three_way.h +6 -6
- package/libcxx/include/__algorithm/make_heap.h +16 -4
- package/libcxx/include/__algorithm/mismatch.h +2 -2
- package/libcxx/include/__algorithm/move.h +8 -19
- package/libcxx/include/__algorithm/move_backward.h +9 -24
- package/libcxx/include/__algorithm/none_of.h +4 -4
- package/libcxx/include/__algorithm/partial_sort.h +1 -1
- package/libcxx/include/__algorithm/partial_sort_copy.h +1 -1
- package/libcxx/include/__algorithm/pstl.h +9 -9
- package/libcxx/include/__algorithm/radix_sort.h +27 -25
- package/libcxx/include/__algorithm/ranges_copy_n.h +3 -26
- package/libcxx/include/__algorithm/ranges_equal.h +17 -26
- package/libcxx/include/__algorithm/ranges_fill.h +7 -6
- package/libcxx/include/__algorithm/ranges_for_each.h +9 -1
- package/libcxx/include/__algorithm/ranges_generate_n.h +2 -6
- package/libcxx/include/__algorithm/ranges_search_n.h +2 -2
- package/libcxx/include/__algorithm/rotate.h +27 -44
- package/libcxx/include/__algorithm/search_n.h +49 -37
- package/libcxx/include/__algorithm/sift_down.h +19 -18
- package/libcxx/include/__algorithm/simd_utils.h +33 -4
- package/libcxx/include/__algorithm/specialized_algorithms.h +54 -0
- package/libcxx/include/__algorithm/stable_sort.h +1 -1
- package/libcxx/include/__assertion_handler +31 -4
- package/libcxx/include/__atomic/atomic.h +36 -60
- package/libcxx/include/__atomic/atomic_flag.h +19 -37
- package/libcxx/include/__atomic/atomic_ref.h +29 -12
- package/libcxx/include/__atomic/atomic_sync.h +127 -55
- package/libcxx/include/__atomic/atomic_sync_timed.h +144 -0
- package/libcxx/include/__atomic/atomic_waitable_traits.h +103 -0
- package/libcxx/include/__atomic/contention_t.h +27 -3
- package/libcxx/include/__atomic/floating_point_helper.h +55 -0
- package/libcxx/include/__bit/countl.h +1 -2
- package/libcxx/include/__bit/countr.h +1 -2
- package/libcxx/include/__bit/has_single_bit.h +1 -1
- package/libcxx/include/__bit/popcount.h +0 -1
- package/libcxx/include/__bit/rotate.h +15 -26
- package/libcxx/include/__bit_reference +207 -18
- package/libcxx/include/__charconv/from_chars_integral.h +1 -1
- package/libcxx/include/__charconv/from_chars_result.h +1 -1
- package/libcxx/include/__charconv/to_chars_integral.h +1 -0
- package/libcxx/include/__charconv/to_chars_result.h +1 -1
- package/libcxx/include/__charconv/traits.h +3 -24
- package/libcxx/include/__chrono/day.h +11 -0
- package/libcxx/include/__chrono/duration.h +58 -33
- package/libcxx/include/__chrono/file_clock.h +4 -2
- package/libcxx/include/__chrono/is_clock.h +72 -0
- package/libcxx/include/__chrono/leap_second.h +13 -0
- package/libcxx/include/__chrono/month.h +13 -0
- package/libcxx/include/__chrono/month_weekday.h +22 -0
- package/libcxx/include/__chrono/monthday.h +20 -0
- package/libcxx/include/__chrono/steady_clock.h +1 -1
- package/libcxx/include/__chrono/system_clock.h +3 -3
- package/libcxx/include/__chrono/time_point.h +37 -13
- package/libcxx/include/__chrono/weekday.h +25 -0
- package/libcxx/include/__chrono/year.h +11 -0
- package/libcxx/include/__chrono/year_month.h +13 -0
- package/libcxx/include/__chrono/year_month_day.h +23 -0
- package/libcxx/include/__chrono/year_month_weekday.h +26 -0
- package/libcxx/include/__chrono/zoned_time.h +16 -0
- package/libcxx/include/__compare/is_eq.h +6 -6
- package/libcxx/include/__compare/strong_order.h +12 -30
- package/libcxx/include/__compare/three_way_comparable.h +2 -2
- package/libcxx/include/__concepts/comparison_common_type.h +40 -0
- package/libcxx/include/__concepts/equality_comparable.h +2 -1
- package/libcxx/include/__condition_variable/condition_variable.h +1 -1
- package/libcxx/include/__config +63 -280
- package/libcxx/include/__configuration/abi.h +14 -24
- package/libcxx/include/__configuration/availability.h +65 -118
- package/libcxx/include/__configuration/compiler.h +6 -6
- package/libcxx/include/__configuration/experimental.h +38 -0
- package/libcxx/include/__configuration/hardening.h +215 -0
- package/libcxx/include/__configuration/language.h +3 -0
- package/libcxx/include/__configuration/platform.h +9 -16
- package/libcxx/include/__coroutine/coroutine_handle.h +9 -9
- package/libcxx/include/__coroutine/noop_coroutine_handle.h +11 -13
- package/libcxx/include/__debug_utils/strict_weak_ordering_check.h +1 -1
- package/libcxx/include/__exception/exception.h +6 -4
- package/libcxx/include/__exception/exception_ptr.h +27 -5
- package/libcxx/include/__exception/nested_exception.h +2 -2
- package/libcxx/include/__exception/operations.h +5 -5
- package/libcxx/include/__expected/bad_expected_access.h +8 -6
- package/libcxx/include/__expected/expected.h +62 -64
- package/libcxx/include/__expected/unexpected.h +4 -4
- package/libcxx/include/__filesystem/copy_options.h +4 -4
- package/libcxx/include/__filesystem/directory_entry.h +37 -33
- package/libcxx/include/__filesystem/directory_iterator.h +9 -11
- package/libcxx/include/__filesystem/directory_options.h +7 -4
- package/libcxx/include/__filesystem/file_status.h +3 -3
- package/libcxx/include/__filesystem/filesystem_error.h +9 -10
- package/libcxx/include/__filesystem/operations.h +97 -66
- package/libcxx/include/__filesystem/path.h +68 -64
- package/libcxx/include/__filesystem/path_iterator.h +1 -3
- package/libcxx/include/__filesystem/perm_options.h +4 -4
- package/libcxx/include/__filesystem/perms.h +4 -4
- package/libcxx/include/__filesystem/recursive_directory_iterator.h +9 -14
- package/libcxx/include/__filesystem/space_info.h +1 -1
- package/libcxx/include/__filesystem/u8path.h +12 -14
- package/libcxx/include/__flat_map/flat_map.h +88 -71
- package/libcxx/include/__flat_map/flat_multimap.h +251 -172
- package/libcxx/include/__flat_map/key_value_iterator.h +0 -1
- package/libcxx/include/__flat_map/utils.h +1 -0
- package/libcxx/include/__flat_set/flat_multiset.h +211 -143
- package/libcxx/include/__flat_set/flat_set.h +86 -68
- package/libcxx/include/__format/concepts.h +0 -14
- package/libcxx/include/__format/extended_grapheme_cluster_table.h +3 -2
- package/libcxx/include/__format/fmt_pair_like.h +42 -0
- package/libcxx/include/__format/format_arg.h +7 -10
- package/libcxx/include/__format/format_args.h +1 -1
- package/libcxx/include/__format/format_context.h +5 -5
- package/libcxx/include/__format/format_parse_context.h +2 -2
- package/libcxx/include/__format/formatter_output.h +30 -34
- package/libcxx/include/__format/indic_conjunct_break_table.h +3 -2
- package/libcxx/include/__format/range_default_formatter.h +2 -41
- package/libcxx/include/__format/range_format.h +71 -0
- package/libcxx/include/__format/range_formatter.h +1 -0
- package/libcxx/include/__format/width_estimation_table.h +4 -2
- package/libcxx/include/__functional/bind.h +10 -15
- package/libcxx/include/__functional/bind_back.h +1 -1
- package/libcxx/include/__functional/bind_front.h +1 -1
- package/libcxx/include/__functional/function.h +57 -75
- package/libcxx/include/__functional/hash.h +1 -10
- package/libcxx/include/__functional/identity.h +1 -1
- package/libcxx/include/__functional/is_transparent.h +8 -0
- package/libcxx/include/__functional/mem_fn.h +2 -1
- package/libcxx/include/__functional/operations.h +18 -0
- package/libcxx/include/__functional/ranges_operations.h +7 -0
- package/libcxx/include/__functional/reference_wrapper.h +7 -5
- package/libcxx/include/__functional/weak_result_type.h +14 -28
- package/libcxx/include/__fwd/ios.h +1 -1
- package/libcxx/include/__fwd/tuple.h +14 -0
- package/libcxx/include/__hash_table +371 -357
- package/libcxx/include/__ios/fpos.h +4 -4
- package/libcxx/include/__iterator/back_insert_iterator.h +1 -7
- package/libcxx/include/__iterator/bounded_iter.h +7 -8
- package/libcxx/include/__iterator/concepts.h +6 -9
- package/libcxx/include/__iterator/cpp17_iterator_concepts.h +13 -12
- package/libcxx/include/__iterator/distance.h +40 -18
- package/libcxx/include/__iterator/front_insert_iterator.h +1 -7
- package/libcxx/include/__iterator/insert_iterator.h +1 -7
- package/libcxx/include/__iterator/istream_iterator.h +6 -7
- package/libcxx/include/__iterator/istreambuf_iterator.h +6 -7
- package/libcxx/include/__iterator/iter_move.h +1 -1
- package/libcxx/include/__iterator/iterator.h +13 -0
- package/libcxx/include/__iterator/iterator_traits.h +13 -14
- package/libcxx/include/__iterator/ostream_iterator.h +1 -7
- package/libcxx/include/__iterator/ostreambuf_iterator.h +1 -7
- package/libcxx/include/__iterator/reverse_iterator.h +8 -13
- package/libcxx/include/__iterator/segmented_iterator.h +3 -8
- package/libcxx/include/__iterator/static_bounded_iter.h +3 -3
- package/libcxx/include/__iterator/wrap_iter.h +8 -6
- package/libcxx/include/__locale +3 -10
- package/libcxx/include/__locale_dir/locale_base_api/bsd_locale_fallbacks.h +0 -10
- package/libcxx/include/__locale_dir/locale_base_api.h +5 -28
- package/libcxx/include/__locale_dir/messages.h +1 -1
- package/libcxx/include/__locale_dir/money.h +2 -2
- package/libcxx/include/__locale_dir/num.h +190 -243
- package/libcxx/include/__locale_dir/pad_and_output.h +5 -6
- package/libcxx/include/__locale_dir/support/bsd_like.h +0 -20
- package/libcxx/include/__locale_dir/support/fuchsia.h +0 -7
- package/libcxx/include/__locale_dir/support/linux.h +0 -37
- package/libcxx/include/__locale_dir/support/netbsd.h +0 -2
- package/libcxx/include/__locale_dir/support/newlib.h +243 -0
- package/libcxx/include/__locale_dir/support/no_locale/characters.h +0 -4
- package/libcxx/include/__locale_dir/support/no_locale/strtonum.h +0 -9
- package/libcxx/include/__locale_dir/support/windows.h +0 -29
- package/libcxx/include/__locale_dir/time.h +3 -7
- package/libcxx/include/__math/hypot.h +1 -1
- package/libcxx/include/__math/logarithms.h +1 -1
- package/libcxx/include/__math/traits.h +80 -11
- package/libcxx/include/__mdspan/extents.h +7 -4
- package/libcxx/include/__mdspan/layout_stride.h +4 -5
- package/libcxx/include/__mdspan/mdspan.h +29 -23
- package/libcxx/include/__memory/addressof.h +7 -5
- package/libcxx/include/__memory/align.h +18 -1
- package/libcxx/include/__memory/allocate_at_least.h +15 -10
- package/libcxx/include/__memory/allocator.h +14 -26
- package/libcxx/include/__memory/allocator_traits.h +6 -4
- package/libcxx/include/__memory/compressed_pair.h +15 -9
- package/libcxx/include/__memory/construct_at.h +12 -23
- package/libcxx/include/__memory/inout_ptr.h +1 -1
- package/libcxx/include/__memory/is_sufficiently_aligned.h +1 -1
- package/libcxx/include/__memory/out_ptr.h +1 -1
- package/libcxx/include/__memory/pointer_traits.h +1 -1
- package/libcxx/include/__memory/raw_storage_iterator.h +3 -9
- package/libcxx/include/__memory/shared_count.h +9 -30
- package/libcxx/include/__memory/shared_ptr.h +100 -145
- package/libcxx/include/__memory/temp_value.h +1 -2
- package/libcxx/include/__memory/uninitialized_algorithms.h +44 -115
- package/libcxx/include/__memory/unique_ptr.h +14 -16
- package/libcxx/include/__memory/uses_allocator_construction.h +1 -0
- package/libcxx/include/__memory_resource/memory_resource.h +4 -2
- package/libcxx/include/__memory_resource/monotonic_buffer_resource.h +1 -1
- package/libcxx/include/__memory_resource/polymorphic_allocator.h +13 -8
- package/libcxx/include/__memory_resource/pool_options.h +1 -1
- package/libcxx/include/__memory_resource/synchronized_pool_resource.h +4 -2
- package/libcxx/include/__memory_resource/unsynchronized_pool_resource.h +1 -1
- package/libcxx/include/__mutex/mutex.h +2 -2
- package/libcxx/include/__mutex/once_flag.h +14 -11
- package/libcxx/include/__mutex/tag_types.h +3 -3
- package/libcxx/include/__mutex/unique_lock.h +8 -7
- package/libcxx/include/__new/align_val_t.h +6 -0
- package/libcxx/include/__new/allocate.h +1 -2
- package/libcxx/include/__new/exceptions.h +8 -2
- package/libcxx/include/__new/global_new_delete.h +4 -11
- package/libcxx/include/__new/interference_size.h +0 -4
- package/libcxx/include/__new/launder.h +3 -5
- package/libcxx/include/__new/nothrow_t.h +1 -1
- package/libcxx/include/__numeric/gcd_lcm.h +24 -34
- package/libcxx/include/__numeric/midpoint.h +9 -14
- package/libcxx/include/__numeric/pstl.h +2 -2
- package/libcxx/include/__numeric/saturation_arithmetic.h +13 -5
- package/libcxx/include/__ostream/basic_ostream.h +8 -8
- package/libcxx/include/__pstl/backends/default.h +14 -14
- package/libcxx/include/__pstl/backends/libdispatch.h +2 -2
- package/libcxx/include/__pstl/cpu_algos/find_if.h +1 -1
- package/libcxx/include/__pstl/cpu_algos/transform.h +5 -6
- package/libcxx/include/__pstl/cpu_algos/transform_reduce.h +5 -4
- package/libcxx/include/__random/binomial_distribution.h +10 -4
- package/libcxx/include/__random/mersenne_twister_engine.h +50 -154
- package/libcxx/include/__random/piecewise_constant_distribution.h +3 -2
- package/libcxx/include/__random/piecewise_linear_distribution.h +3 -2
- package/libcxx/include/__ranges/adjacent_transform_view.h +406 -0
- package/libcxx/include/__ranges/adjacent_view.h +419 -0
- package/libcxx/include/__ranges/as_rvalue_view.h +9 -9
- package/libcxx/include/__ranges/chunk_by_view.h +6 -6
- package/libcxx/include/__ranges/common_view.h +7 -7
- package/libcxx/include/__ranges/drop_view.h +8 -8
- package/libcxx/include/__ranges/drop_while_view.h +5 -5
- package/libcxx/include/__ranges/elements_of.h +49 -0
- package/libcxx/include/__ranges/empty_view.h +5 -5
- package/libcxx/include/__ranges/filter_view.h +10 -10
- package/libcxx/include/__ranges/iota_view.h +41 -22
- package/libcxx/include/__ranges/owning_view.h +15 -15
- package/libcxx/include/__ranges/ref_view.h +6 -6
- package/libcxx/include/__ranges/repeat_view.h +17 -10
- package/libcxx/include/__ranges/single_view.h +8 -8
- package/libcxx/include/__ranges/take_view.h +9 -9
- package/libcxx/include/__ranges/transform_view.h +1 -2
- package/libcxx/include/__ranges/view_interface.h +10 -10
- package/libcxx/include/__ranges/zip_transform_view.h +357 -0
- package/libcxx/include/__ranges/zip_view.h +20 -20
- package/libcxx/include/__split_buffer +612 -240
- package/libcxx/include/__stop_token/atomic_unique_lock.h +1 -1
- package/libcxx/include/__stop_token/stop_callback.h +2 -2
- package/libcxx/include/__stop_token/stop_source.h +1 -1
- package/libcxx/include/__stop_token/stop_state.h +4 -4
- package/libcxx/include/__stop_token/stop_token.h +1 -1
- package/libcxx/include/__string/char_traits.h +51 -31
- package/libcxx/include/__string/constexpr_c_functions.h +5 -5
- package/libcxx/include/__support/xlocale/__strtonum_fallback.h +0 -8
- package/libcxx/include/__system_error/error_category.h +8 -8
- package/libcxx/include/__system_error/error_code.h +5 -5
- package/libcxx/include/__system_error/error_condition.h +4 -4
- package/libcxx/include/__system_error/system_error.h +1 -1
- package/libcxx/include/__thread/id.h +1 -1
- package/libcxx/include/__thread/jthread.h +1 -1
- package/libcxx/include/__thread/poll_with_backoff.h +27 -8
- package/libcxx/include/__thread/support/c11.h +8 -8
- package/libcxx/include/__thread/support/pthread.h +8 -8
- package/libcxx/include/__thread/support/windows.h +8 -8
- package/libcxx/include/__thread/thread.h +13 -8
- package/libcxx/include/__thread/timed_backoff_policy.h +3 -2
- package/libcxx/include/__tree +849 -701
- package/libcxx/include/__tuple/sfinae_helpers.h +1 -44
- package/libcxx/include/__tuple/tuple_element.h +0 -12
- package/libcxx/include/__tuple/tuple_size.h +0 -4
- package/libcxx/include/__tuple/tuple_transform.h +45 -0
- package/libcxx/include/__type_traits/aligned_storage.h +13 -40
- package/libcxx/include/__type_traits/desugars_to.h +4 -0
- package/libcxx/include/__type_traits/invoke.h +8 -0
- package/libcxx/include/__type_traits/is_allocator.h +6 -7
- package/libcxx/include/__type_traits/is_array.h +26 -0
- package/libcxx/include/__type_traits/is_equality_comparable.h +16 -21
- package/libcxx/include/__type_traits/is_final.h +1 -1
- package/libcxx/include/__type_traits/is_floating_point.h +7 -6
- package/libcxx/include/__type_traits/is_generic_transparent_comparator.h +30 -0
- package/libcxx/include/__type_traits/is_specialization.h +2 -6
- package/libcxx/include/__type_traits/is_within_lifetime.h +29 -0
- package/libcxx/include/__type_traits/make_transparent.h +52 -0
- package/libcxx/include/__type_traits/reference_constructs_from_temporary.h +1 -7
- package/libcxx/include/__type_traits/reference_converts_from_temporary.h +1 -1
- package/libcxx/include/__utility/cmp.h +19 -7
- package/libcxx/include/__utility/default_three_way_comparator.h +70 -0
- package/libcxx/include/__utility/in_place.h +1 -1
- package/libcxx/include/__utility/integer_sequence.h +56 -41
- package/libcxx/include/__utility/lazy_synth_three_way_comparator.h +120 -0
- package/libcxx/include/__utility/pair.h +22 -25
- package/libcxx/include/__utility/scope_guard.h +2 -0
- package/libcxx/include/__utility/try_key_extraction.h +114 -0
- package/libcxx/include/__vector/vector.h +187 -160
- package/libcxx/include/__vector/vector_bool.h +76 -83
- package/libcxx/include/any +118 -155
- package/libcxx/include/array +88 -56
- package/libcxx/include/atomic +2 -0
- package/libcxx/include/barrier +20 -24
- package/libcxx/include/bitset +49 -30
- package/libcxx/include/ccomplex +3 -11
- package/libcxx/include/chrono +47 -0
- package/libcxx/include/ciso646 +3 -6
- package/libcxx/include/complex +77 -65
- package/libcxx/include/complex.h +10 -10
- package/libcxx/include/condition_variable +3 -3
- package/libcxx/include/cstdalign +3 -10
- package/libcxx/include/cstdbool +3 -10
- package/libcxx/include/ctgmath +2 -11
- package/libcxx/include/ctype.h +24 -24
- package/libcxx/include/cwchar +2 -2
- package/libcxx/include/deque +109 -225
- package/libcxx/include/errno.h +269 -269
- package/libcxx/include/exception +4 -1
- package/libcxx/include/ext/hash_map +7 -48
- package/libcxx/include/ext/hash_set +2 -8
- package/libcxx/include/fenv.h +43 -43
- package/libcxx/include/flat_map +663 -11
- package/libcxx/include/flat_set +543 -8
- package/libcxx/include/float.h +16 -16
- package/libcxx/include/forward_list +33 -53
- package/libcxx/include/fstream +57 -42
- package/libcxx/include/future +41 -51
- package/libcxx/include/initializer_list +9 -3
- package/libcxx/include/inttypes.h +16 -16
- package/libcxx/include/ios +28 -28
- package/libcxx/include/istream +19 -13
- package/libcxx/include/iterator +10 -0
- package/libcxx/include/latch +7 -5
- package/libcxx/include/limits +4 -4
- package/libcxx/include/list +61 -79
- package/libcxx/include/map +386 -274
- package/libcxx/include/math.h +19 -0
- package/libcxx/include/mdspan +1 -5
- package/libcxx/include/mutex +29 -19
- package/libcxx/include/optional +644 -149
- package/libcxx/include/print +9 -5
- package/libcxx/include/queue +39 -37
- package/libcxx/include/ranges +48 -0
- package/libcxx/include/regex +33 -31
- package/libcxx/include/scoped_allocator +16 -11
- package/libcxx/include/semaphore +15 -18
- package/libcxx/include/set +220 -192
- package/libcxx/include/shared_mutex +3 -8
- package/libcxx/include/span +53 -37
- package/libcxx/include/sstream +34 -28
- package/libcxx/include/stack +13 -15
- package/libcxx/include/stddef.h +10 -10
- package/libcxx/include/stdexcept +2 -2
- package/libcxx/include/stdio.h +20 -21
- package/libcxx/include/streambuf +59 -19
- package/libcxx/include/string +574 -573
- package/libcxx/include/string_view +113 -89
- package/libcxx/include/strstream +10 -10
- package/libcxx/include/syncstream +4 -4
- package/libcxx/include/tgmath.h +12 -12
- package/libcxx/include/tuple +242 -212
- package/libcxx/include/type_traits +8 -2
- package/libcxx/include/typeindex +5 -3
- package/libcxx/include/typeinfo +92 -89
- package/libcxx/include/unordered_map +179 -304
- package/libcxx/include/unordered_set +168 -195
- package/libcxx/include/utility +12 -0
- package/libcxx/include/valarray +106 -161
- package/libcxx/include/variant +25 -33
- package/libcxx/include/version +41 -24
- package/libcxx/include/wctype.h +29 -29
- package/libcxx/libc/hdr/errno_macros.h +3 -1
- package/libcxx/libc/hdr/stdint_proxy.h +18 -0
- package/libcxx/libc/hdr/types/wchar_t.h +23 -0
- package/libcxx/libc/hdr/wchar_overlay.h +69 -0
- package/libcxx/libc/include/llvm-libc-macros/cfloat128-macros.h +41 -0
- package/libcxx/libc/include/llvm-libc-macros/cfloat16-macros.h +20 -0
- package/libcxx/libc/include/llvm-libc-macros/wchar-macros.h +18 -0
- package/libcxx/libc/include/llvm-libc-types/cfloat128.h +11 -28
- package/libcxx/libc/include/llvm-libc-types/cfloat16.h +4 -7
- package/libcxx/libc/include/llvm-libc-types/wint_t.h +14 -0
- package/libcxx/libc/shared/libc_common.h +5 -0
- package/libcxx/libc/src/__support/CPP/bit.h +50 -12
- package/libcxx/libc/src/__support/CPP/type_traits/is_complex.h +7 -0
- package/libcxx/libc/src/__support/CPP/type_traits/is_destructible.h +2 -1
- package/libcxx/libc/src/__support/CPP/type_traits/is_unsigned.h +6 -0
- package/libcxx/libc/src/__support/CPP/utility/integer_sequence.h +10 -0
- package/libcxx/libc/src/__support/FPUtil/FPBits.h +6 -7
- package/libcxx/libc/src/__support/FPUtil/rounding_mode.h +50 -4
- package/libcxx/libc/src/__support/big_int.h +14 -14
- package/libcxx/libc/src/__support/common.h +3 -2
- package/libcxx/libc/src/__support/ctype_utils.h +19 -12
- package/libcxx/libc/src/__support/detailed_powers_of_ten.h +1 -2
- package/libcxx/libc/src/__support/high_precision_decimal.h +33 -14
- package/libcxx/libc/src/__support/libc_assert.h +2 -0
- package/libcxx/libc/src/__support/macros/attributes.h +44 -1
- package/libcxx/libc/src/__support/macros/config.h +23 -0
- package/libcxx/libc/src/__support/macros/null_check.h +1 -2
- package/libcxx/libc/src/__support/macros/optimization.h +3 -0
- package/libcxx/libc/src/__support/macros/properties/architectures.h +5 -1
- package/libcxx/libc/src/__support/macros/properties/compiler.h +8 -3
- package/libcxx/libc/src/__support/macros/properties/cpu_features.h +17 -1
- package/libcxx/libc/src/__support/macros/properties/types.h +2 -3
- package/libcxx/libc/src/__support/macros/sanitizer.h +0 -10
- package/libcxx/libc/src/__support/math_extras.h +20 -4
- package/libcxx/libc/src/__support/str_to_float.h +98 -125
- package/libcxx/libc/src/__support/str_to_integer.h +39 -27
- package/libcxx/libc/src/__support/wctype_utils.h +588 -0
- package/libcxx/src/any.cpp +4 -0
- package/libcxx/src/atomic.cpp +365 -80
- package/libcxx/src/barrier.cpp +4 -3
- package/libcxx/src/charconv.cpp +6 -3
- package/libcxx/src/condition_variable_destructor.cpp +1 -1
- package/libcxx/src/error_category.cpp +3 -1
- package/libcxx/src/exception.cpp +2 -10
- package/libcxx/src/experimental/time_zone.cpp +1 -1
- package/libcxx/src/experimental/tzdb.cpp +4 -1
- package/libcxx/src/filesystem/error.h +4 -22
- package/libcxx/src/filesystem/format_string.h +9 -18
- package/libcxx/src/filesystem/int128_builtins.cpp +2 -0
- package/libcxx/src/filesystem/operations.cpp +2 -9
- package/libcxx/src/filesystem/path.cpp +3 -1
- package/libcxx/src/include/aligned_alloc.h +65 -0
- package/libcxx/src/include/config_elast.h +1 -1
- package/libcxx/src/include/from_chars_floating_point.h +11 -7
- package/libcxx/src/include/overridable_function.h +8 -10
- package/libcxx/src/iostream.cpp +56 -37
- package/libcxx/src/locale.cpp +213 -196
- package/libcxx/src/memory.cpp +12 -14
- package/libcxx/src/mutex_destructor.cpp +1 -1
- package/libcxx/src/new.cpp +5 -5
- package/libcxx/src/optional.cpp +4 -0
- package/libcxx/src/print.cpp +9 -1
- package/libcxx/src/random.cpp +0 -26
- package/libcxx/src/string.cpp +10 -25
- package/libcxx/src/support/runtime/exception_fallback.ipp +2 -0
- package/libcxx/src/support/runtime/exception_glibcxx.ipp +3 -0
- package/libcxx/src/support/runtime/exception_libcxxabi.ipp +6 -2
- package/libcxx/src/support/runtime/exception_libcxxrt.ipp +2 -0
- package/libcxx/src/support/runtime/exception_msvc.ipp +2 -0
- package/libcxx/src/support/runtime/exception_pointer_cxxabi.ipp +9 -10
- package/libcxx/src/support/runtime/exception_pointer_glibcxx.ipp +2 -0
- package/libcxx/src/support/runtime/exception_pointer_msvc.ipp +1 -0
- package/libcxx/src/support/runtime/exception_pointer_unimplemented.ipp +1 -0
- package/libcxx/src/support/win32/locale_win32.cpp +1 -1
- package/libcxx/src/system_error.cpp +2 -0
- package/libcxx/src/thread.cpp +1 -3
- package/libcxx/src/valarray.cpp +1 -2
- package/libcxx/src/vector.cpp +2 -2
- package/libcxxabi/include/__cxxabi_config.h +42 -23
- package/libcxxabi/src/cxa_exception.cpp +4 -2
- package/libcxxabi/src/cxa_exception.h +16 -14
- package/libcxxabi/src/cxa_personality.cpp +126 -9
- package/libcxxabi/src/cxa_thread_atexit.cpp +2 -1
- package/libcxxabi/src/demangle/DemangleConfig.h +4 -0
- package/libcxxabi/src/demangle/ItaniumDemangle.h +9 -6
- package/libcxxabi/src/demangle/Utility.h +21 -7
- package/libcxxabi/src/fallback_malloc.cpp +1 -1
- package/libcxxabi/src/private_typeinfo.cpp +6 -0
- package/libcxxabi/src/stdlib_new_delete.cpp +5 -5
- package/libtsan/LICENSE.TXT +311 -0
- package/libtsan/builtins/assembly.h +41 -8
- package/libtsan/interception/interception_win.cpp +4 -0
- package/libtsan/sanitizer_common/sanitizer_allocator_primary32.h +1 -0
- package/libtsan/sanitizer_common/sanitizer_allocator_primary64.h +18 -0
- package/libtsan/sanitizer_common/sanitizer_common.h +15 -2
- package/libtsan/sanitizer_common/sanitizer_common_interceptors.inc +30 -4
- package/libtsan/sanitizer_common/sanitizer_common_interceptors_ioctl.inc +4 -0
- package/libtsan/sanitizer_common/sanitizer_common_interceptors_vfork_aarch64.inc.S +2 -1
- package/libtsan/sanitizer_common/sanitizer_common_interceptors_vfork_i386.inc.S +2 -0
- package/libtsan/sanitizer_common/sanitizer_common_interceptors_vfork_x86_64.inc.S +2 -0
- package/libtsan/sanitizer_common/sanitizer_common_syscalls.inc +18 -0
- package/libtsan/sanitizer_common/sanitizer_file.cpp +40 -12
- package/libtsan/sanitizer_common/sanitizer_file.h +3 -0
- package/libtsan/sanitizer_common/sanitizer_flags.inc +7 -0
- package/libtsan/sanitizer_common/sanitizer_fuchsia.cpp +30 -3
- package/libtsan/sanitizer_common/sanitizer_haiku.cpp +2 -2
- package/libtsan/sanitizer_common/sanitizer_internal_defs.h +1 -1
- package/libtsan/sanitizer_common/sanitizer_libc.cpp +8 -0
- package/libtsan/sanitizer_common/sanitizer_libc.h +1 -0
- package/libtsan/sanitizer_common/sanitizer_linux.cpp +15 -7
- package/libtsan/sanitizer_common/sanitizer_linux.h +3 -3
- package/libtsan/sanitizer_common/sanitizer_linux_libcdep.cpp +1 -0
- package/libtsan/sanitizer_common/sanitizer_mac.cpp +255 -104
- package/libtsan/sanitizer_common/sanitizer_mac.h +5 -0
- package/libtsan/sanitizer_common/sanitizer_netbsd.cpp +2 -2
- package/libtsan/sanitizer_common/sanitizer_platform.h +27 -1
- package/libtsan/sanitizer_common/sanitizer_platform_interceptors.h +5 -4
- package/libtsan/sanitizer_common/sanitizer_platform_limits_posix.cpp +15 -17
- package/libtsan/sanitizer_common/sanitizer_platform_limits_posix.h +32 -6
- package/libtsan/sanitizer_common/sanitizer_posix.cpp +3 -12
- package/libtsan/sanitizer_common/sanitizer_posix.h +2 -1
- package/libtsan/sanitizer_common/sanitizer_posix_libcdep.cpp +19 -0
- package/libtsan/sanitizer_common/sanitizer_procmaps_mac.cpp +102 -37
- package/libtsan/sanitizer_common/sanitizer_redefine_builtins.h +1 -1
- package/libtsan/sanitizer_common/sanitizer_signal_interceptors.inc +40 -2
- package/libtsan/sanitizer_common/sanitizer_stoptheworld.h +1 -1
- package/libtsan/sanitizer_common/sanitizer_stoptheworld_linux_libcdep.cpp +83 -12
- package/libtsan/sanitizer_common/sanitizer_stoptheworld_mac.cpp +3 -3
- package/libtsan/sanitizer_common/sanitizer_stoptheworld_netbsd_libcdep.cpp +7 -7
- package/libtsan/sanitizer_common/sanitizer_stoptheworld_win.cpp +2 -2
- package/libtsan/sanitizer_common/sanitizer_symbolizer_internal.h +5 -1
- package/libtsan/sanitizer_common/sanitizer_symbolizer_libcdep.cpp +11 -1
- package/libtsan/sanitizer_common/sanitizer_symbolizer_mac.cpp +86 -29
- package/libtsan/sanitizer_common/sanitizer_symbolizer_posix_libcdep.cpp +27 -16
- package/libtsan/sanitizer_common/sanitizer_thread_registry.cpp +5 -4
- package/libtsan/sanitizer_common/sanitizer_thread_registry.h +4 -4
- package/libtsan/sanitizer_common/sanitizer_win.cpp +1 -3
- package/libtsan/tsan_debugging.cpp +2 -2
- package/libtsan/tsan_flags.cpp +37 -0
- package/libtsan/tsan_flags.h +8 -0
- package/libtsan/tsan_flags.inc +12 -0
- package/libtsan/tsan_interceptors.h +9 -1
- package/libtsan/tsan_interceptors_mac.cpp +19 -0
- package/libtsan/tsan_interceptors_posix.cpp +78 -32
- package/libtsan/tsan_interface.h +3 -3
- package/libtsan/tsan_interface_ann.cpp +23 -9
- package/libtsan/tsan_mman.cpp +18 -4
- package/libtsan/tsan_platform.h +44 -7
- package/libtsan/tsan_platform_linux.cpp +42 -14
- package/libtsan/tsan_platform_mac.cpp +16 -3
- package/libtsan/tsan_report.h +14 -1
- package/libtsan/tsan_rtl.cpp +14 -0
- package/libtsan/tsan_rtl.h +7 -2
- package/libtsan/tsan_rtl_aarch64.S +3 -5
- package/libtsan/tsan_rtl_access.cpp +8 -3
- package/libtsan/tsan_rtl_amd64.S +2 -0
- package/libtsan/tsan_rtl_mutex.cpp +94 -49
- package/libtsan/tsan_rtl_report.cpp +132 -65
- package/libtsan/tsan_rtl_thread.cpp +31 -9
- package/libtsan/tsan_symbolize.cpp +1 -1
- package/libtsan/tsan_symbolize.h +1 -1
- package/libtsan/tsan_trace.h +1 -1
- package/libunwind/include/__libunwind_config.h +11 -2
- package/libunwind/include/libunwind.h +117 -11
- package/libunwind/include/unwind_arm_ehabi.h +4 -1
- package/libunwind/src/AddressSpace.hpp +42 -20
- package/libunwind/src/CompactUnwinder.hpp +16 -5
- package/libunwind/src/DwarfInstructions.hpp +24 -13
- package/libunwind/src/DwarfParser.hpp +62 -23
- package/libunwind/src/EHHeaderParser.hpp +7 -4
- package/libunwind/src/Registers.hpp +226 -22
- package/libunwind/src/Unwind-seh.cpp +6 -7
- package/libunwind/src/Unwind-wasm.c +7 -7
- package/libunwind/src/UnwindCursor.hpp +167 -49
- package/libunwind/src/UnwindLevel1.c +46 -17
- package/libunwind/src/UnwindRegistersRestore.S +46 -5
- package/libunwind/src/UnwindRegistersSave.S +86 -2
- package/libunwind/src/assembly.h +5 -1
- package/libunwind/src/config.h +9 -0
- package/libunwind/src/gcc_personality_v0.c +79 -6
- package/libunwind/src/libunwind.cpp +104 -4
- package/libunwind/src/libunwind_ext.h +7 -1
- package/libunwind/src/shadow_stack_unwind.h +2 -2
- package/lldb/pretty_printers.py +948 -0
- package/package.json +1 -1
- package/std/Build/Cache/Path.zig +1 -1
- package/std/Build/Cache.zig +6 -6
- package/std/Build/Step/Compile.zig +18 -20
- package/std/Build/Step/ConfigHeader.zig +1 -1
- package/std/Build/Step/Run.zig +15 -8
- package/std/Build/Step.zig +2 -7
- package/std/Build/Watch/FsEvents.zig +1 -1
- package/std/Build/WebServer.zig +2 -2
- package/std/Build/abi.zig +1 -1
- package/std/Build.zig +0 -3
- package/std/Io/Dir.zig +9 -4
- package/std/Io/Dispatch.zig +8 -18
- package/std/Io/File/Writer.zig +8 -6
- package/std/Io/File.zig +0 -9
- package/std/Io/Kqueue.zig +3 -3
- package/std/Io/Reader.zig +8 -14
- package/std/Io/Semaphore.zig +112 -17
- package/std/Io/Terminal.zig +1 -1
- package/std/Io/Threaded.zig +183 -46
- package/std/Io/Uring.zig +18 -20
- package/std/Io/Writer.zig +10 -7
- package/std/Io/net/HostName.zig +11 -6
- package/std/Io/net.zig +11 -11
- package/std/Io.zig +104 -38
- package/std/Random/ChaCha.zig +2 -2
- package/std/Random/benchmark.zig +2 -2
- package/std/Random.zig +6 -6
- package/std/SemanticVersion.zig +1 -1
- package/std/Target/Query.zig +2 -2
- package/std/Target/aarch64.zig +620 -77
- package/std/Target/amdgcn.zig +421 -21
- package/std/Target/arm.zig +40 -6
- package/std/Target/bpf.zig +6 -0
- package/std/Target/hexagon.zig +41 -6
- package/std/Target/loongarch.zig +18 -0
- package/std/Target/mips.zig +6 -0
- package/std/Target/nvptx.zig +58 -35
- package/std/Target/powerpc.zig +27 -19
- package/std/Target/riscv.zig +415 -177
- package/std/Target/sparc.zig +17 -0
- package/std/Target/wasm.zig +7 -0
- package/std/Target/x86.zig +200 -31
- package/std/Target/xtensa.zig +65 -0
- package/std/Target.zig +67 -14
- package/std/Thread.zig +5 -2
- package/std/array_hash_map.zig +103 -57
- package/std/array_list.zig +10 -31
- package/std/base64.zig +5 -5
- package/std/bit_set.zig +86 -69
- package/std/c/haiku.zig +3 -0
- package/std/c/serenity.zig +1 -6
- package/std/c.zig +123 -32
- package/std/compress/flate/Decompress.zig +3 -4
- package/std/compress/zstd/Decompress.zig +7 -9
- package/std/crypto/25519/curve25519.zig +2 -2
- package/std/crypto/25519/edwards25519.zig +3 -3
- package/std/crypto/25519/ristretto255.zig +2 -2
- package/std/crypto/25519/scalar.zig +6 -6
- package/std/crypto/25519/x25519.zig +1 -1
- package/std/crypto/Certificate.zig +14 -2
- package/std/crypto/Sha1.zig +1 -1
- package/std/crypto/aegis.zig +45 -39
- package/std/crypto/aes_ccm.zig +22 -22
- package/std/crypto/aes_gcm.zig +10 -12
- package/std/crypto/aes_ocb.zig +9 -9
- package/std/crypto/argon2.zig +15 -15
- package/std/crypto/ascon.zig +75 -33
- package/std/crypto/bcrypt.zig +20 -10
- package/std/crypto/benchmark.zig +7 -7
- package/std/crypto/blake2.zig +100 -64
- package/std/crypto/cbc_mac.zig +1 -1
- package/std/crypto/chacha20.zig +10 -10
- package/std/crypto/cmac.zig +3 -3
- package/std/crypto/codecs/asn1/Oid.zig +12 -1
- package/std/crypto/codecs/asn1/der/Encoder.zig +1 -1
- package/std/crypto/codecs/asn1.zig +1 -1
- package/std/crypto/codecs/base64_hex_ct.zig +3 -5
- package/std/crypto/ecdsa.zig +9 -9
- package/std/crypto/ff.zig +4 -5
- package/std/crypto/ghash_polyval.zig +4 -4
- package/std/crypto/hkdf.zig +1 -1
- package/std/crypto/isap.zig +3 -3
- package/std/crypto/kangarootwelve.zig +1 -1
- package/std/crypto/keccak_p.zig +8 -8
- package/std/crypto/md5.zig +1 -1
- package/std/crypto/ml_dsa.zig +39 -39
- package/std/crypto/ml_kem.zig +12 -34
- package/std/crypto/modes.zig +2 -2
- package/std/crypto/pbkdf2.zig +1 -1
- package/std/crypto/pcurves/common.zig +4 -5
- package/std/crypto/pcurves/p256/scalar.zig +3 -3
- package/std/crypto/pcurves/p384/scalar.zig +2 -2
- package/std/crypto/pcurves/secp256k1/scalar.zig +3 -3
- package/std/crypto/pcurves/tests/p256.zig +5 -5
- package/std/crypto/pcurves/tests/p384.zig +5 -5
- package/std/crypto/pcurves/tests/secp256k1.zig +3 -3
- package/std/crypto/salsa20.zig +8 -8
- package/std/crypto/sha2.zig +2 -2
- package/std/crypto/sha3.zig +2 -2
- package/std/crypto/siphash.zig +1 -1
- package/std/crypto/timing_safe.zig +10 -9
- package/std/crypto/tls/Client.zig +89 -13
- package/std/crypto/tls.zig +1 -1
- package/std/crypto.zig +4 -3
- package/std/debug/Dwarf.zig +15 -12
- package/std/debug/Pdb.zig +25 -17
- package/std/debug.zig +14 -8
- package/std/deque.zig +1 -1
- package/std/elf.zig +1 -1
- package/std/enums.zig +8 -8
- package/std/fmt/parse_float/decimal.zig +1 -1
- package/std/fmt/parse_float.zig +1 -1
- package/std/fmt.zig +14 -10
- package/std/fs/path.zig +7 -5
- package/std/hash/Adler32.zig +3 -3
- package/std/hash/benchmark.zig +2 -2
- package/std/hash/wyhash.zig +2 -2
- package/std/hash/xxhash.zig +0 -6
- package/std/hash_map.zig +20 -1
- package/std/heap/BufferFirstAllocator.zig +165 -0
- package/std/heap/debug_allocator.zig +2 -2
- package/std/heap/memory_pool.zig +34 -197
- package/std/heap.zig +2 -133
- package/std/http/Client.zig +21 -24
- package/std/http.zig +4 -5
- package/std/json/Scanner.zig +2 -2
- package/std/json/static.zig +2 -2
- package/std/{builtin.zig → lang.zig} +5 -1
- package/std/leb128.zig +2 -2
- package/std/math/big/int.zig +5 -5
- package/std/math/big.zig +4 -4
- package/std/math/copysign.zig +1 -1
- package/std/math/float.zig +62 -0
- package/std/math/frexp.zig +4 -4
- package/std/math/ilogb.zig +1 -1
- package/std/math/isfinite.zig +1 -1
- package/std/math/isinf.zig +1 -1
- package/std/math/isnan.zig +1 -2
- package/std/math/isnormal.zig +2 -2
- package/std/math/iszero.zig +2 -2
- package/std/math/ldexp.zig +2 -2
- package/std/math/log10.zig +0 -2
- package/std/math/modf.zig +1 -2
- package/std/math/nextafter.zig +3 -4
- package/std/math/pow.zig +1 -1
- package/std/math/powi.zig +2 -3
- package/std/math/signbit.zig +0 -1
- package/std/math.zig +21 -26
- package/std/mem/Allocator.zig +0 -6
- package/std/mem.zig +31 -31
- package/std/meta/trailer_flags.zig +1 -1
- package/std/meta.zig +4 -36
- package/std/multi_array_list.zig +24 -0
- package/std/os/emscripten.zig +7 -6
- package/std/os/linux/IoUring.zig +2 -0
- package/std/os/linux/aarch64.zig +41 -12
- package/std/os/linux/arc.zig +41 -12
- package/std/os/linux/arm.zig +41 -12
- package/std/os/linux/bpf.zig +6 -0
- package/std/os/linux/hexagon.zig +33 -11
- package/std/os/linux/ioctl.zig +2 -2
- package/std/os/linux/loongarch32.zig +41 -13
- package/std/os/linux/loongarch64.zig +41 -12
- package/std/os/linux/m68k.zig +41 -13
- package/std/os/linux/mips.zig +67 -36
- package/std/os/linux/mips64.zig +60 -29
- package/std/os/linux/mipsn32.zig +60 -29
- package/std/os/linux/or1k.zig +41 -12
- package/std/os/linux/powerpc.zig +41 -12
- package/std/os/linux/powerpc64.zig +41 -12
- package/std/os/linux/riscv32.zig +41 -12
- package/std/os/linux/riscv64.zig +41 -12
- package/std/os/linux/s390x.zig +44 -7
- package/std/os/linux/sparc64.zig +83 -52
- package/std/os/linux/syscalls.zig +26 -1
- package/std/os/linux/thumb.zig +52 -36
- package/std/os/linux/x32.zig +41 -12
- package/std/os/linux/x86.zig +44 -15
- package/std/os/linux/x86_64.zig +41 -12
- package/std/os/linux.zig +416 -450
- package/std/os/plan9.zig +1 -1
- package/std/os/uefi/hii.zig +1 -1
- package/std/os/uefi/tables/boot_services.zig +9 -8
- package/std/os/uefi/tables/runtime_services.zig +1 -1
- package/std/os/windows.zig +130 -1
- package/std/os.zig +41 -0
- package/std/posix.zig +1 -1
- package/std/process/Environ.zig +1 -1
- package/std/process.zig +5 -4
- package/std/simd.zig +4 -21
- package/std/sort.zig +3 -3
- package/std/start.zig +17 -4
- package/std/std.zig +8 -1
- package/std/tar/Writer.zig +39 -33
- package/std/tar.zig +8 -4
- package/std/testing.zig +2 -2
- package/std/unicode.zig +13 -8
- package/std/zig/Ast/Render.zig +6 -30
- package/std/zig/Ast.zig +12 -37
- package/std/zig/AstGen.zig +175 -332
- package/std/zig/AstRlAnnotate.zig +1 -22
- package/std/zig/AstSmith.zig +5 -11
- package/std/zig/BuiltinFn.zig +0 -32
- package/std/zig/ErrorBundle.zig +6 -2
- package/std/zig/LibCInstallation.zig +34 -12
- package/std/zig/Parse.zig +11 -76
- package/std/zig/TokenSmith.zig +0 -6
- package/std/zig/WindowsSdk.zig +18 -18
- package/std/zig/Zir.zig +65 -132
- package/std/zig/ZonGen.zig +19 -27
- package/std/zig/llvm/Builder.zig +39 -33
- package/std/zig/llvm/bitcode_writer.zig +3 -3
- package/std/zig/llvm/ir.zig +8 -8
- package/std/zig/system/arm.zig +56 -2
- package/std/zig/system/windows.zig +34 -1
- package/std/zig/system/x86.zig +60 -16
- package/std/zig/system.zig +0 -10
- package/std/zig/target.zig +1 -4
- package/std/zig/tokenizer.zig +4 -43
- package/std/zig.zig +3 -14
- package/std/zip.zig +5 -5
- package/std/zon/parse.zig +1 -1
- package/zig.h +340 -1
- package/compiler_rt/long_double.zig +0 -37
- package/include/amxbf16transposeintrin.h +0 -94
- package/include/amxcomplextransposeintrin.h +0 -303
- package/include/amxfp16transposeintrin.h +0 -94
- package/include/amxmovrstransposeintrin.h +0 -200
- package/include/amxtf32transposeintrin.h +0 -105
- package/include/amxtransposeintrin.h +0 -248
- package/libc/include/hexagon-linux-any/asm/signal.h +0 -29
- package/libc/include/s390x-linux-any/asm/tape390.h +0 -103
- package/libc/mingw/math/lrintl.c +0 -18
- package/libc/mingw/math/rintl.c +0 -16
- package/libc/mingw/winpthreads/spinlock.c +0 -82
- package/libc/musl/src/linux/tee.c +0 -8
- package/libc/musl/src/math/i386/lrintl.c +0 -8
- package/libc/musl/src/math/i386/rintl.c +0 -7
- package/libc/musl/src/math/lrintl.c +0 -36
- package/libc/musl/src/math/rintl.c +0 -29
- package/libc/musl/src/math/s390x/rintl.c +0 -15
- package/libc/musl/src/math/x32/lrintl.s +0 -7
- package/libc/musl/src/math/x32/rintl.s +0 -6
- package/libc/musl/src/math/x86_64/lrintl.c +0 -8
- package/libc/musl/src/math/x86_64/rintl.c +0 -7
- package/libc/musl/src/string/strdup.c +0 -10
- package/libc/musl/src/string/strndup.c +0 -12
- package/libc/musl/src/string/wcsdup.c +0 -10
- package/libc/musl/src/thread/pthread_spin_destroy.c +0 -6
- package/libc/musl/src/thread/pthread_spin_init.c +0 -6
- package/libc/musl/src/thread/pthread_spin_lock.c +0 -8
- package/libc/musl/src/thread/pthread_spin_trylock.c +0 -7
- package/libc/musl/src/thread/pthread_spin_unlock.c +0 -7
- package/libc/musl/src/unistd/dup2.c +0 -20
- package/libc/musl/src/unistd/dup3.c +0 -26
- package/libc/wasi/thread-stub/pthread_spin_lock.c +0 -8
- package/libc/wasi/thread-stub/pthread_spin_trylock.c +0 -8
- package/libc/wasi/thread-stub/pthread_spin_unlock.c +0 -7
- package/libtsan/sanitizer_common/sanitizer_coverage_interface.inc +0 -43
- package/std/Build/Step/CheckObject.zig +0 -2764
- /package/std/{builtin → lang}/assembly.zig +0 -0
package/std/zig/AstGen.zig
CHANGED
|
@@ -199,7 +199,7 @@ pub fn generate(gpa: Allocator, tree: Ast) Allocator.Error!Zir {
|
|
|
199
199
|
assert(struct_decl_ref.toIndex().? == .main_struct_inst);
|
|
200
200
|
break :fatal false;
|
|
201
201
|
} else |err| switch (err) {
|
|
202
|
-
error.OutOfMemory => return
|
|
202
|
+
error.OutOfMemory => |e| return e,
|
|
203
203
|
error.AnalysisFail => break :fatal true, // Handled via compile_errors below.
|
|
204
204
|
}
|
|
205
205
|
} else fatal: {
|
|
@@ -243,10 +243,13 @@ pub fn generate(gpa: Allocator, tree: Ast) Allocator.Error!Zir {
|
|
|
243
243
|
}
|
|
244
244
|
}
|
|
245
245
|
|
|
246
|
+
try astgen.extra.shrinkToLen(gpa);
|
|
247
|
+
try astgen.string_bytes.shrinkToLen(gpa);
|
|
248
|
+
|
|
246
249
|
return .{
|
|
247
250
|
.instructions = if (fatal) .empty else astgen.instructions.toOwnedSlice(),
|
|
248
|
-
.string_bytes =
|
|
249
|
-
.extra =
|
|
251
|
+
.string_bytes = astgen.string_bytes.toOwnedSliceAssert(),
|
|
252
|
+
.extra = astgen.extra.toOwnedSliceAssert(),
|
|
250
253
|
};
|
|
251
254
|
}
|
|
252
255
|
|
|
@@ -504,7 +507,6 @@ fn lvalExpr(gz: *GenZir, scope: *Scope, node: Ast.Node.Index) InnerError!Zir.Ins
|
|
|
504
507
|
.less_than,
|
|
505
508
|
.less_or_equal,
|
|
506
509
|
.array_cat,
|
|
507
|
-
.array_mult,
|
|
508
510
|
.bool_and,
|
|
509
511
|
.bool_or,
|
|
510
512
|
.@"asm",
|
|
@@ -774,19 +776,6 @@ fn expr(gz: *GenZir, scope: *Scope, ri: ResultInfo, node: Ast.Node.Index) InnerE
|
|
|
774
776
|
.less_or_equal => return simpleBinOp(gz, scope, ri, node, .cmp_lte),
|
|
775
777
|
.array_cat => return simpleBinOp(gz, scope, ri, node, .array_cat),
|
|
776
778
|
|
|
777
|
-
.array_mult => {
|
|
778
|
-
// This syntax form does not currently use the result type in the language specification.
|
|
779
|
-
// However, the result type can be used to emit more optimal code for large multiplications by
|
|
780
|
-
// having Sema perform a coercion before the multiplication operation.
|
|
781
|
-
const lhs_node, const rhs_node = tree.nodeData(node).node_and_node;
|
|
782
|
-
const result = try gz.addPlNode(.array_mul, node, Zir.Inst.ArrayMul{
|
|
783
|
-
.res_ty = if (try ri.rl.resultType(gz, node)) |t| t else .none,
|
|
784
|
-
.lhs = try expr(gz, scope, .{ .rl = .none }, lhs_node),
|
|
785
|
-
.rhs = try comptimeExpr(gz, scope, .{ .rl = .{ .coerced_ty = .usize_type } }, rhs_node, .array_mul_factor),
|
|
786
|
-
});
|
|
787
|
-
return rvalue(gz, ri, result, node);
|
|
788
|
-
},
|
|
789
|
-
|
|
790
779
|
.error_union, .merge_error_sets => |tag| {
|
|
791
780
|
const inst_tag: Zir.Inst.Tag = switch (tag) {
|
|
792
781
|
.error_union => .error_union_type,
|
|
@@ -1409,12 +1398,12 @@ fn fnProtoExprInner(
|
|
|
1409
1398
|
try comptimeExpr(
|
|
1410
1399
|
&block_scope,
|
|
1411
1400
|
scope,
|
|
1412
|
-
.{ .rl = .{ .coerced_ty = try block_scope.
|
|
1401
|
+
.{ .rl = .{ .coerced_ty = try block_scope.addStdLangValue(callconv_expr, .calling_convention) } },
|
|
1413
1402
|
callconv_expr,
|
|
1414
1403
|
.@"callconv",
|
|
1415
1404
|
)
|
|
1416
1405
|
else if (implicit_ccc)
|
|
1417
|
-
try block_scope.
|
|
1406
|
+
try block_scope.addStdLangValue(node, .calling_convention_c)
|
|
1418
1407
|
else
|
|
1419
1408
|
.none;
|
|
1420
1409
|
|
|
@@ -1776,11 +1765,12 @@ fn structInitExpr(
|
|
|
1776
1765
|
}
|
|
1777
1766
|
|
|
1778
1767
|
{
|
|
1779
|
-
var
|
|
1780
|
-
|
|
1768
|
+
var bfa_buf: [256]u8 = undefined;
|
|
1769
|
+
var bfa_state: std.heap.BufferFirstAllocator = .init(&bfa_buf, astgen.arena);
|
|
1770
|
+
const bfa = bfa_state.allocator();
|
|
1781
1771
|
|
|
1782
1772
|
var duplicate_names: std.array_hash_map.Auto(Zir.NullTerminatedString, ArrayList(Ast.TokenIndex)) = .empty;
|
|
1783
|
-
try duplicate_names.ensureTotalCapacity(
|
|
1773
|
+
try duplicate_names.ensureTotalCapacity(bfa, @intCast(struct_init.ast.fields.len));
|
|
1784
1774
|
|
|
1785
1775
|
// When there aren't errors, use this to avoid a second iteration.
|
|
1786
1776
|
var any_duplicate = false;
|
|
@@ -1789,14 +1779,14 @@ fn structInitExpr(
|
|
|
1789
1779
|
const name_token = tree.firstToken(field) - 2;
|
|
1790
1780
|
const name_index = try astgen.identAsString(name_token);
|
|
1791
1781
|
|
|
1792
|
-
const gop = try duplicate_names.getOrPut(
|
|
1782
|
+
const gop = try duplicate_names.getOrPut(bfa, name_index);
|
|
1793
1783
|
|
|
1794
1784
|
if (gop.found_existing) {
|
|
1795
|
-
try gop.value_ptr.append(
|
|
1785
|
+
try gop.value_ptr.append(bfa, name_token);
|
|
1796
1786
|
any_duplicate = true;
|
|
1797
1787
|
} else {
|
|
1798
1788
|
gop.value_ptr.* = .empty;
|
|
1799
|
-
try gop.value_ptr.append(
|
|
1789
|
+
try gop.value_ptr.append(bfa, name_token);
|
|
1800
1790
|
}
|
|
1801
1791
|
}
|
|
1802
1792
|
|
|
@@ -2709,7 +2699,6 @@ fn addEnsureResult(gz: *GenZir, maybe_unused_result: Zir.Inst.Ref, statement: As
|
|
|
2709
2699
|
.alloc_inferred_comptime_mut,
|
|
2710
2700
|
.make_ptr_const,
|
|
2711
2701
|
.array_cat,
|
|
2712
|
-
.array_mul,
|
|
2713
2702
|
.array_type,
|
|
2714
2703
|
.array_type_sentinel,
|
|
2715
2704
|
.elem_type,
|
|
@@ -2870,9 +2859,7 @@ fn addEnsureResult(gz: *GenZir, maybe_unused_result: Zir.Inst.Ref, statement: As
|
|
|
2870
2859
|
.mul_add,
|
|
2871
2860
|
.max,
|
|
2872
2861
|
.min,
|
|
2873
|
-
.c_import,
|
|
2874
2862
|
.@"resume",
|
|
2875
|
-
.ret_err_value_code,
|
|
2876
2863
|
.ret_ptr,
|
|
2877
2864
|
.ret_type,
|
|
2878
2865
|
.for_len,
|
|
@@ -2961,7 +2948,6 @@ fn addEnsureResult(gz: *GenZir, maybe_unused_result: Zir.Inst.Ref, statement: As
|
|
|
2961
2948
|
=> break :b true,
|
|
2962
2949
|
|
|
2963
2950
|
.@"defer" => unreachable,
|
|
2964
|
-
.defer_err_code => unreachable,
|
|
2965
2951
|
}
|
|
2966
2952
|
} else switch (maybe_unused_result) {
|
|
2967
2953
|
.none => unreachable,
|
|
@@ -2981,60 +2967,28 @@ fn addEnsureResult(gz: *GenZir, maybe_unused_result: Zir.Inst.Ref, statement: As
|
|
|
2981
2967
|
return noreturn_src_node;
|
|
2982
2968
|
}
|
|
2983
2969
|
|
|
2984
|
-
fn
|
|
2985
|
-
have_any: bool,
|
|
2986
|
-
have_normal: bool,
|
|
2987
|
-
have_err: bool,
|
|
2988
|
-
need_err_code: bool,
|
|
2989
|
-
} {
|
|
2990
|
-
var have_normal = false;
|
|
2991
|
-
var have_err = false;
|
|
2992
|
-
var need_err_code = false;
|
|
2970
|
+
fn anyErrdefers(outer_scope: *Scope, inner_scope: *Scope) bool {
|
|
2993
2971
|
var scope = inner_scope;
|
|
2994
2972
|
while (scope != outer_scope) {
|
|
2995
2973
|
switch (scope.unwrap()) {
|
|
2996
2974
|
.gen_zir => |gen_zir| scope = gen_zir.parent,
|
|
2997
2975
|
.local_val => |local_val| scope = local_val.parent,
|
|
2998
2976
|
.local_ptr => |local_ptr| scope = local_ptr.parent,
|
|
2999
|
-
.defer_normal => |
|
|
3000
|
-
|
|
3001
|
-
|
|
3002
|
-
have_normal = true;
|
|
3003
|
-
},
|
|
3004
|
-
.defer_error => |defer_scope| {
|
|
3005
|
-
scope = defer_scope.parent;
|
|
3006
|
-
|
|
3007
|
-
have_err = true;
|
|
3008
|
-
|
|
3009
|
-
const have_err_payload = defer_scope.remapped_err_code != .none;
|
|
3010
|
-
need_err_code = need_err_code or have_err_payload;
|
|
3011
|
-
},
|
|
2977
|
+
.defer_normal => |defer_normal| scope = defer_normal.parent,
|
|
2978
|
+
.defer_error => return true,
|
|
3012
2979
|
.namespace => unreachable,
|
|
3013
2980
|
.top => unreachable,
|
|
3014
2981
|
}
|
|
3015
2982
|
}
|
|
3016
|
-
return
|
|
3017
|
-
.have_any = have_normal or have_err,
|
|
3018
|
-
.have_normal = have_normal,
|
|
3019
|
-
.have_err = have_err,
|
|
3020
|
-
.need_err_code = need_err_code,
|
|
3021
|
-
};
|
|
2983
|
+
return false;
|
|
3022
2984
|
}
|
|
3023
2985
|
|
|
3024
|
-
const DefersToEmit = union(enum) {
|
|
3025
|
-
both: Zir.Inst.Ref, // err code
|
|
3026
|
-
both_sans_err,
|
|
3027
|
-
normal_only,
|
|
3028
|
-
};
|
|
3029
|
-
|
|
3030
2986
|
fn genDefers(
|
|
3031
2987
|
gz: *GenZir,
|
|
3032
2988
|
outer_scope: *Scope,
|
|
3033
2989
|
inner_scope: *Scope,
|
|
3034
|
-
which_ones:
|
|
2990
|
+
which_ones: enum { normal_only, normal_and_error },
|
|
3035
2991
|
) InnerError!void {
|
|
3036
|
-
const gpa = gz.astgen.gpa;
|
|
3037
|
-
|
|
3038
2992
|
var scope = inner_scope;
|
|
3039
2993
|
while (scope != outer_scope) {
|
|
3040
2994
|
switch (scope.unwrap()) {
|
|
@@ -3048,33 +3002,10 @@ fn genDefers(
|
|
|
3048
3002
|
.defer_error => |defer_scope| {
|
|
3049
3003
|
scope = defer_scope.parent;
|
|
3050
3004
|
switch (which_ones) {
|
|
3051
|
-
.
|
|
3005
|
+
.normal_only => continue,
|
|
3006
|
+
.normal_and_error => {
|
|
3052
3007
|
try gz.addDefer(defer_scope.index, defer_scope.len);
|
|
3053
3008
|
},
|
|
3054
|
-
.both => |err_code| {
|
|
3055
|
-
if (defer_scope.remapped_err_code.unwrap()) |remapped_err_code| {
|
|
3056
|
-
try gz.instructions.ensureUnusedCapacity(gpa, 1);
|
|
3057
|
-
try gz.astgen.instructions.ensureUnusedCapacity(gpa, 1);
|
|
3058
|
-
|
|
3059
|
-
const payload_index = try gz.astgen.addExtra(Zir.Inst.DeferErrCode{
|
|
3060
|
-
.remapped_err_code = remapped_err_code,
|
|
3061
|
-
.index = defer_scope.index,
|
|
3062
|
-
.len = defer_scope.len,
|
|
3063
|
-
});
|
|
3064
|
-
const new_index: Zir.Inst.Index = @enumFromInt(gz.astgen.instructions.len);
|
|
3065
|
-
gz.astgen.instructions.appendAssumeCapacity(.{
|
|
3066
|
-
.tag = .defer_err_code,
|
|
3067
|
-
.data = .{ .defer_err_code = .{
|
|
3068
|
-
.err_code = err_code,
|
|
3069
|
-
.payload_index = payload_index,
|
|
3070
|
-
} },
|
|
3071
|
-
});
|
|
3072
|
-
gz.instructions.appendAssumeCapacity(new_index);
|
|
3073
|
-
} else {
|
|
3074
|
-
try gz.addDefer(defer_scope.index, defer_scope.len);
|
|
3075
|
-
}
|
|
3076
|
-
},
|
|
3077
|
-
.normal_only => continue,
|
|
3078
3009
|
}
|
|
3079
3010
|
},
|
|
3080
3011
|
.namespace => unreachable,
|
|
@@ -3137,46 +3068,17 @@ fn deferStmt(
|
|
|
3137
3068
|
defer defer_gen.unstack();
|
|
3138
3069
|
|
|
3139
3070
|
const tree = gz.astgen.tree;
|
|
3140
|
-
|
|
3141
|
-
|
|
3142
|
-
|
|
3143
|
-
const payload_token = tree.nodeData(node).opt_token_and_node[0].unwrap() orelse break :blk &defer_gen.base;
|
|
3144
|
-
const ident_name = try gz.astgen.identAsString(payload_token);
|
|
3145
|
-
if (std.mem.eql(u8, tree.tokenSlice(payload_token), "_")) {
|
|
3146
|
-
try gz.astgen.appendErrorTok(payload_token, "discard of error capture; omit it instead", .{});
|
|
3147
|
-
break :blk &defer_gen.base;
|
|
3148
|
-
}
|
|
3149
|
-
const remapped_err_code: Zir.Inst.Index = @enumFromInt(gz.astgen.instructions.len);
|
|
3150
|
-
opt_remapped_err_code = remapped_err_code.toOptional();
|
|
3151
|
-
_ = try gz.astgen.appendPlaceholder();
|
|
3152
|
-
const remapped_err_code_ref = remapped_err_code.toRef();
|
|
3153
|
-
local_val_scope = .{
|
|
3154
|
-
.parent = &defer_gen.base,
|
|
3155
|
-
.gen_zir = gz,
|
|
3156
|
-
.name = ident_name,
|
|
3157
|
-
.inst = remapped_err_code_ref,
|
|
3158
|
-
.token_src = payload_token,
|
|
3159
|
-
.id_cat = .capture,
|
|
3160
|
-
};
|
|
3161
|
-
try gz.addDbgVar(.dbg_var_val, ident_name, remapped_err_code_ref);
|
|
3162
|
-
break :blk &local_val_scope.base;
|
|
3163
|
-
};
|
|
3164
|
-
const expr_node = switch (scope_tag) {
|
|
3165
|
-
.defer_normal => tree.nodeData(node).node,
|
|
3166
|
-
.defer_error => tree.nodeData(node).opt_token_and_node[1],
|
|
3167
|
-
else => unreachable,
|
|
3168
|
-
};
|
|
3169
|
-
_ = try unusedResultExpr(&defer_gen, sub_scope, expr_node);
|
|
3170
|
-
try checkUsed(gz, scope, sub_scope);
|
|
3071
|
+
const expr_node = tree.nodeData(node).node;
|
|
3072
|
+
_ = try unusedResultExpr(&defer_gen, &defer_gen.base, expr_node);
|
|
3073
|
+
try checkUsed(gz, scope, &defer_gen.base);
|
|
3171
3074
|
_ = try defer_gen.addBreak(.break_inline, @enumFromInt(0), .void_value);
|
|
3172
3075
|
|
|
3173
3076
|
const body = defer_gen.instructionsSlice();
|
|
3174
|
-
const
|
|
3175
|
-
const body_len = gz.astgen.countBodyLenAfterFixupsExtraRefs(body, extra_insts);
|
|
3077
|
+
const body_len = gz.astgen.countBodyLenAfterFixupsExtraRefs(body, &.{});
|
|
3176
3078
|
|
|
3177
3079
|
const index: u32 = @intCast(gz.astgen.extra.items.len);
|
|
3178
3080
|
try gz.astgen.extra.ensureUnusedCapacity(gz.astgen.gpa, body_len);
|
|
3179
|
-
gz.astgen.appendBodyWithFixupsExtraRefsArrayList(&gz.astgen.extra, body,
|
|
3081
|
+
gz.astgen.appendBodyWithFixupsExtraRefsArrayList(&gz.astgen.extra, body, &.{});
|
|
3180
3082
|
|
|
3181
3083
|
const defer_scope = try block_arena.create(Scope.Defer);
|
|
3182
3084
|
|
|
@@ -3185,7 +3087,6 @@ fn deferStmt(
|
|
|
3185
3087
|
.parent = scope,
|
|
3186
3088
|
.index = index,
|
|
3187
3089
|
.len = body_len,
|
|
3188
|
-
.remapped_err_code = opt_remapped_err_code,
|
|
3189
3090
|
};
|
|
3190
3091
|
return &defer_scope.base;
|
|
3191
3092
|
}
|
|
@@ -3881,7 +3782,7 @@ fn ptrType(
|
|
|
3881
3782
|
gz.astgen.source_line = source_line;
|
|
3882
3783
|
gz.astgen.source_column = source_column;
|
|
3883
3784
|
|
|
3884
|
-
const addrspace_ty = try gz.
|
|
3785
|
+
const addrspace_ty = try gz.addStdLangValue(addrspace_node, .address_space);
|
|
3885
3786
|
addrspace_ref = try comptimeExpr(gz, scope, .{ .rl = .{ .coerced_ty = addrspace_ty } }, addrspace_node, .@"addrspace");
|
|
3886
3787
|
trailing_count += 1;
|
|
3887
3788
|
}
|
|
@@ -4176,7 +4077,7 @@ fn fnDecl(
|
|
|
4176
4077
|
|
|
4177
4078
|
if (fn_proto.ast.addrspace_expr.unwrap()) |addrspace_expr| {
|
|
4178
4079
|
astgen.restoreSourceCursor(saved_cursor);
|
|
4179
|
-
const addrspace_ty = try addrspace_gz.
|
|
4080
|
+
const addrspace_ty = try addrspace_gz.addStdLangValue(addrspace_expr, .address_space);
|
|
4180
4081
|
const inst = try expr(&addrspace_gz, &addrspace_gz.base, .{ .rl = .{ .coerced_ty = addrspace_ty } }, addrspace_expr);
|
|
4181
4082
|
_ = try addrspace_gz.addBreakWithSrcNode(.break_inline, decl_inst, inst, decl_node);
|
|
4182
4083
|
}
|
|
@@ -4384,7 +4285,7 @@ fn fnDeclInner(
|
|
|
4384
4285
|
const inst = try expr(
|
|
4385
4286
|
&cc_gz,
|
|
4386
4287
|
scope,
|
|
4387
|
-
.{ .rl = .{ .coerced_ty = try cc_gz.
|
|
4288
|
+
.{ .rl = .{ .coerced_ty = try cc_gz.addStdLangValue(callconv_expr, .calling_convention) } },
|
|
4388
4289
|
callconv_expr,
|
|
4389
4290
|
);
|
|
4390
4291
|
if (cc_gz.instructionsSlice().len == 0) {
|
|
@@ -4394,7 +4295,7 @@ fn fnDeclInner(
|
|
|
4394
4295
|
_ = try cc_gz.addBreak(.break_inline, @enumFromInt(0), inst);
|
|
4395
4296
|
break :blk inst;
|
|
4396
4297
|
} else if (has_inline_keyword) {
|
|
4397
|
-
const inst = try cc_gz.
|
|
4298
|
+
const inst = try cc_gz.addStdLangValue(decl_node, .calling_convention_inline);
|
|
4398
4299
|
_ = try cc_gz.addBreak(.break_inline, @enumFromInt(0), inst);
|
|
4399
4300
|
break :blk inst;
|
|
4400
4301
|
} else {
|
|
@@ -4592,7 +4493,7 @@ fn globalVarDecl(
|
|
|
4592
4493
|
defer addrspace_gz.unstack();
|
|
4593
4494
|
|
|
4594
4495
|
if (var_decl.ast.addrspace_node.unwrap()) |addrspace_node| {
|
|
4595
|
-
const addrspace_ty = try addrspace_gz.
|
|
4496
|
+
const addrspace_ty = try addrspace_gz.addStdLangValue(addrspace_node, .address_space);
|
|
4596
4497
|
const addrspace_inst = try expr(&addrspace_gz, &addrspace_gz.base, .{ .rl = .{ .coerced_ty = addrspace_ty } }, addrspace_node);
|
|
4597
4498
|
_ = try addrspace_gz.addBreakWithSrcNode(.break_inline, decl_inst, addrspace_inst, node);
|
|
4598
4499
|
}
|
|
@@ -4879,7 +4780,7 @@ fn testDecl(
|
|
|
4879
4780
|
.noalias_bits = 0,
|
|
4880
4781
|
|
|
4881
4782
|
// Tests don't have a prototype that needs hashing
|
|
4882
|
-
.proto_hash =
|
|
4783
|
+
.proto_hash = @splat(0),
|
|
4883
4784
|
});
|
|
4884
4785
|
|
|
4885
4786
|
_ = try decl_block.addBreak(.break_inline, decl_inst, func_inst);
|
|
@@ -4914,7 +4815,7 @@ fn structDeclInner(
|
|
|
4914
4815
|
scope: *Scope,
|
|
4915
4816
|
node: Ast.Node.Index,
|
|
4916
4817
|
container_decl: Ast.full.ContainerDecl,
|
|
4917
|
-
layout: std.
|
|
4818
|
+
layout: std.lang.Type.ContainerLayout,
|
|
4918
4819
|
maybe_backing_int_node: Ast.Node.OptionalIndex,
|
|
4919
4820
|
name_strat: Zir.Inst.NameStrategy,
|
|
4920
4821
|
) InnerError!Zir.Inst.Ref {
|
|
@@ -4998,6 +4899,10 @@ fn structDeclInner(
|
|
|
4998
4899
|
);
|
|
4999
4900
|
if (field_comptime_bits) |bits| @memset(bits.get(astgen), 0);
|
|
5000
4901
|
|
|
4902
|
+
const old_hasher = astgen.src_hasher;
|
|
4903
|
+
defer astgen.src_hasher = old_hasher;
|
|
4904
|
+
astgen.src_hasher = .init(.{});
|
|
4905
|
+
|
|
5001
4906
|
// Before any field bodies comes the backing int type, if specified.
|
|
5002
4907
|
const backing_int_type_body_len: ?u32 = if (maybe_backing_int_node.unwrap()) |backing_int_node| len: {
|
|
5003
4908
|
if (layout != .@"packed") return astgen.failNode(
|
|
@@ -5005,6 +4910,7 @@ fn structDeclInner(
|
|
|
5005
4910
|
"non-packed struct does not support backing integer type",
|
|
5006
4911
|
.{},
|
|
5007
4912
|
);
|
|
4913
|
+
astgen.src_hasher.update(astgen.tree.getNodeSource(backing_int_node));
|
|
5008
4914
|
const type_ref = try typeExpr(&block_scope, &namespace.base, backing_int_node);
|
|
5009
4915
|
if (!block_scope.endsWithNoReturn()) {
|
|
5010
4916
|
_ = try block_scope.addBreak(.break_inline, decl_inst, type_ref);
|
|
@@ -5014,10 +4920,6 @@ fn structDeclInner(
|
|
|
5014
4920
|
break :len body_len;
|
|
5015
4921
|
} else null;
|
|
5016
4922
|
|
|
5017
|
-
const old_hasher = astgen.src_hasher;
|
|
5018
|
-
defer astgen.src_hasher = old_hasher;
|
|
5019
|
-
astgen.src_hasher = .init(.{});
|
|
5020
|
-
|
|
5021
4923
|
var next_field_idx: u32 = 0;
|
|
5022
4924
|
for (container_decl.ast.members) |member_node| {
|
|
5023
4925
|
var member = switch (try containerMember(&block_scope, &namespace.base, &wip_decls, member_node)) {
|
|
@@ -5118,7 +5020,7 @@ fn tupleDecl(
|
|
|
5118
5020
|
scope: *Scope,
|
|
5119
5021
|
node: Ast.Node.Index,
|
|
5120
5022
|
container_decl: Ast.full.ContainerDecl,
|
|
5121
|
-
layout: std.
|
|
5023
|
+
layout: std.lang.Type.ContainerLayout,
|
|
5122
5024
|
backing_int_node: Ast.Node.OptionalIndex,
|
|
5123
5025
|
) InnerError!Zir.Inst.Ref {
|
|
5124
5026
|
const astgen = gz.astgen;
|
|
@@ -5215,7 +5117,7 @@ fn unionDeclInner(
|
|
|
5215
5117
|
scope: *Scope,
|
|
5216
5118
|
node: Ast.Node.Index,
|
|
5217
5119
|
members: []const Ast.Node.Index,
|
|
5218
|
-
layout: std.
|
|
5120
|
+
layout: std.lang.Type.ContainerLayout,
|
|
5219
5121
|
opt_arg_node: Ast.Node.OptionalIndex,
|
|
5220
5122
|
auto_enum_tok: ?Ast.TokenIndex,
|
|
5221
5123
|
name_strat: Zir.Inst.NameStrategy,
|
|
@@ -5278,8 +5180,13 @@ fn unionDeclInner(
|
|
|
5278
5180
|
const field_align_body_lens = try scratch.addOptionalSlice(scan_result.any_field_aligns, scan_result.fields_len);
|
|
5279
5181
|
const field_value_body_lens = try scratch.addOptionalSlice(scan_result.any_field_values, scan_result.fields_len);
|
|
5280
5182
|
|
|
5183
|
+
const old_hasher = astgen.src_hasher;
|
|
5184
|
+
defer astgen.src_hasher = old_hasher;
|
|
5185
|
+
astgen.src_hasher = .init(.{});
|
|
5186
|
+
|
|
5281
5187
|
// Before any field bodies comes the tag/backing type, if specified.
|
|
5282
5188
|
const arg_type_body_len: ?u32 = if (opt_arg_node.unwrap()) |arg_node| len: {
|
|
5189
|
+
astgen.src_hasher.update(astgen.tree.getNodeSource(arg_node));
|
|
5283
5190
|
const type_ref = try typeExpr(&block_scope, &namespace.base, arg_node);
|
|
5284
5191
|
if (!block_scope.endsWithNoReturn()) {
|
|
5285
5192
|
_ = try block_scope.addBreak(.break_inline, decl_inst, type_ref);
|
|
@@ -5289,10 +5196,6 @@ fn unionDeclInner(
|
|
|
5289
5196
|
break :len body_len;
|
|
5290
5197
|
} else null;
|
|
5291
5198
|
|
|
5292
|
-
const old_hasher = astgen.src_hasher;
|
|
5293
|
-
defer astgen.src_hasher = old_hasher;
|
|
5294
|
-
astgen.src_hasher = .init(.{});
|
|
5295
|
-
|
|
5296
5199
|
var next_field_idx: u32 = 0;
|
|
5297
5200
|
for (members) |member_node| {
|
|
5298
5201
|
var member = switch (try containerMember(&block_scope, &namespace.base, &wip_decls, member_node)) {
|
|
@@ -5421,7 +5324,7 @@ fn containerDecl(
|
|
|
5421
5324
|
|
|
5422
5325
|
switch (tree.tokenTag(container_decl.ast.main_token)) {
|
|
5423
5326
|
.keyword_struct => {
|
|
5424
|
-
const layout: std.
|
|
5327
|
+
const layout: std.lang.Type.ContainerLayout = if (container_decl.layout_token) |t| switch (tree.tokenTag(t)) {
|
|
5425
5328
|
.keyword_packed => .@"packed",
|
|
5426
5329
|
.keyword_extern => .@"extern",
|
|
5427
5330
|
else => unreachable,
|
|
@@ -5431,7 +5334,7 @@ fn containerDecl(
|
|
|
5431
5334
|
return rvalue(gz, ri, result, node);
|
|
5432
5335
|
},
|
|
5433
5336
|
.keyword_union => {
|
|
5434
|
-
const layout: std.
|
|
5337
|
+
const layout: std.lang.Type.ContainerLayout = if (container_decl.layout_token) |t| switch (tree.tokenTag(t)) {
|
|
5435
5338
|
.keyword_packed => .@"packed",
|
|
5436
5339
|
.keyword_extern => .@"extern",
|
|
5437
5340
|
else => unreachable,
|
|
@@ -5483,8 +5386,13 @@ fn containerDecl(
|
|
|
5483
5386
|
const field_names = try scratch.addSlice(fields_len);
|
|
5484
5387
|
const field_value_body_lens = try scratch.addOptionalSlice(scan_result.any_field_values, fields_len);
|
|
5485
5388
|
|
|
5389
|
+
const old_hasher = astgen.src_hasher;
|
|
5390
|
+
defer astgen.src_hasher = old_hasher;
|
|
5391
|
+
astgen.src_hasher = .init(.{});
|
|
5392
|
+
|
|
5486
5393
|
// Before any field bodies comes the tag type, if specified.
|
|
5487
5394
|
const tag_type_body_len: ?u32 = if (container_decl.ast.arg.unwrap()) |tag_type_node| len: {
|
|
5395
|
+
astgen.src_hasher.update(astgen.tree.getNodeSource(tag_type_node));
|
|
5488
5396
|
const type_ref = try typeExpr(&block_scope, &namespace.base, tag_type_node);
|
|
5489
5397
|
if (!block_scope.endsWithNoReturn()) {
|
|
5490
5398
|
_ = try block_scope.addBreak(.break_inline, decl_inst, type_ref);
|
|
@@ -5494,10 +5402,6 @@ fn containerDecl(
|
|
|
5494
5402
|
break :len body_len;
|
|
5495
5403
|
} else null;
|
|
5496
5404
|
|
|
5497
|
-
const old_hasher = astgen.src_hasher;
|
|
5498
|
-
defer astgen.src_hasher = old_hasher;
|
|
5499
|
-
astgen.src_hasher = .init(.{});
|
|
5500
|
-
|
|
5501
5405
|
var next_field_idx: u32 = 0;
|
|
5502
5406
|
var opt_nonexhaustive_node: Ast.Node.OptionalIndex = .none;
|
|
5503
5407
|
for (container_decl.ast.members) |member_node| {
|
|
@@ -5681,7 +5585,7 @@ fn containerMember(
|
|
|
5681
5585
|
|
|
5682
5586
|
const prev_decl_index = wip_decls.index;
|
|
5683
5587
|
astgen.fnDecl(gz, scope, wip_decls, member_node, body, full) catch |err| switch (err) {
|
|
5684
|
-
error.OutOfMemory => return
|
|
5588
|
+
error.OutOfMemory => |e| return e,
|
|
5685
5589
|
error.AnalysisFail => {
|
|
5686
5590
|
wip_decls.index = prev_decl_index;
|
|
5687
5591
|
try addFailedDeclaration(
|
|
@@ -5704,7 +5608,7 @@ fn containerMember(
|
|
|
5704
5608
|
const full = tree.fullVarDecl(member_node).?;
|
|
5705
5609
|
const prev_decl_index = wip_decls.index;
|
|
5706
5610
|
astgen.globalVarDecl(gz, scope, wip_decls, member_node, full) catch |err| switch (err) {
|
|
5707
|
-
error.OutOfMemory => return
|
|
5611
|
+
error.OutOfMemory => |e| return e,
|
|
5708
5612
|
error.AnalysisFail => {
|
|
5709
5613
|
wip_decls.index = prev_decl_index;
|
|
5710
5614
|
try addFailedDeclaration(
|
|
@@ -5722,7 +5626,7 @@ fn containerMember(
|
|
|
5722
5626
|
.@"comptime" => {
|
|
5723
5627
|
const prev_decl_index = wip_decls.index;
|
|
5724
5628
|
astgen.comptimeDecl(gz, scope, wip_decls, member_node) catch |err| switch (err) {
|
|
5725
|
-
error.OutOfMemory => return
|
|
5629
|
+
error.OutOfMemory => |e| return e,
|
|
5726
5630
|
error.AnalysisFail => {
|
|
5727
5631
|
wip_decls.index = prev_decl_index;
|
|
5728
5632
|
try addFailedDeclaration(
|
|
@@ -5742,7 +5646,7 @@ fn containerMember(
|
|
|
5742
5646
|
// Since it doesn't strictly matter *what* this is, let's save ourselves the trouble
|
|
5743
5647
|
// of duplicating the test name logic, and just assume this is an unnamed test.
|
|
5744
5648
|
astgen.testDecl(gz, scope, wip_decls, member_node) catch |err| switch (err) {
|
|
5745
|
-
error.OutOfMemory => return
|
|
5649
|
+
error.OutOfMemory => |e| return e,
|
|
5746
5650
|
error.AnalysisFail => {
|
|
5747
5651
|
wip_decls.index = prev_decl_index;
|
|
5748
5652
|
try addFailedDeclaration(
|
|
@@ -5876,7 +5780,7 @@ fn tryExpr(
|
|
|
5876
5780
|
else => Zir.Inst.Tag.err_union_code,
|
|
5877
5781
|
};
|
|
5878
5782
|
const err_code = try else_scope.addUnNode(err_tag, operand, node);
|
|
5879
|
-
try genDefers(&else_scope, &fn_block.base, scope, .
|
|
5783
|
+
try genDefers(&else_scope, &fn_block.base, scope, .normal_and_error);
|
|
5880
5784
|
try emitDbgStmt(&else_scope, try_lc);
|
|
5881
5785
|
_ = try else_scope.addUnNode(.ret_node, err_code, node);
|
|
5882
5786
|
|
|
@@ -6656,9 +6560,16 @@ fn whileExpr(
|
|
|
6656
6560
|
.operand = undefined,
|
|
6657
6561
|
} },
|
|
6658
6562
|
});
|
|
6563
|
+
if (!continue_scope.is_comptime) {
|
|
6564
|
+
_ = try continue_scope.addRestoreErrRetIndex(.{ .block = continue_block }, .always, then_node);
|
|
6565
|
+
}
|
|
6659
6566
|
_ = try continue_scope.addBreak(break_tag, continue_block, .void_value);
|
|
6660
6567
|
}
|
|
6661
6568
|
try continue_scope.setBlockBody(continue_block);
|
|
6569
|
+
if (!then_scope.is_comptime) {
|
|
6570
|
+
const cont_node = while_full.ast.cont_expr.unwrap() orelse then_node;
|
|
6571
|
+
_ = try then_scope.addRestoreErrRetIndex(.{ .block = cond_block }, .always, cont_node);
|
|
6572
|
+
}
|
|
6662
6573
|
_ = try then_scope.addBreak(break_tag, cond_block, .void_value);
|
|
6663
6574
|
|
|
6664
6575
|
var else_scope = parent_gz.makeSubBlock(&cond_scope.base);
|
|
@@ -6703,6 +6614,9 @@ fn whileExpr(
|
|
|
6703
6614
|
|
|
6704
6615
|
try checkUsed(parent_gz, &else_scope.base, sub_scope);
|
|
6705
6616
|
if (!else_scope.endsWithNoReturn()) {
|
|
6617
|
+
if (!else_scope.is_comptime) {
|
|
6618
|
+
_ = try else_scope.addRestoreErrRetIndex(.{ .block = loop_block }, .always, else_node);
|
|
6619
|
+
}
|
|
6706
6620
|
_ = try else_scope.addBreakWithSrcNode(break_tag, loop_block, else_result, else_node);
|
|
6707
6621
|
}
|
|
6708
6622
|
} else {
|
|
@@ -6973,6 +6887,9 @@ fn forExpr(
|
|
|
6973
6887
|
});
|
|
6974
6888
|
|
|
6975
6889
|
const break_tag: Zir.Inst.Tag = if (is_inline) .break_inline else .@"break";
|
|
6890
|
+
if (!then_scope.is_comptime) {
|
|
6891
|
+
_ = try then_scope.addRestoreErrRetIndex(.{ .block = cond_block }, .always, then_node);
|
|
6892
|
+
}
|
|
6976
6893
|
_ = try then_scope.addBreak(break_tag, cond_block, .void_value);
|
|
6977
6894
|
|
|
6978
6895
|
var else_scope = parent_gz.makeSubBlock(&cond_scope.base);
|
|
@@ -6990,6 +6907,9 @@ fn forExpr(
|
|
|
6990
6907
|
_ = try addEnsureResult(&else_scope, else_result, else_node);
|
|
6991
6908
|
}
|
|
6992
6909
|
if (!else_scope.endsWithNoReturn()) {
|
|
6910
|
+
if (!else_scope.is_comptime) {
|
|
6911
|
+
_ = try else_scope.addRestoreErrRetIndex(.{ .block = loop_block }, .always, else_node);
|
|
6912
|
+
}
|
|
6993
6913
|
_ = try else_scope.addBreakWithSrcNode(break_tag, loop_block, else_result, else_node);
|
|
6994
6914
|
}
|
|
6995
6915
|
} else {
|
|
@@ -8011,18 +7931,10 @@ fn ret(gz: *GenZir, scope: *Scope, node: Ast.Node.Index) InnerError!Zir.Inst.Ref
|
|
|
8011
7931
|
// for detecting whether to add something to the function's inferred error set.
|
|
8012
7932
|
const ident_token = tree.nodeMainToken(operand_node) + 2;
|
|
8013
7933
|
const err_name_str_index = try astgen.identAsString(ident_token);
|
|
8014
|
-
|
|
8015
|
-
if (!defer_counts.need_err_code) {
|
|
8016
|
-
try genDefers(gz, defer_outer, scope, .both_sans_err);
|
|
8017
|
-
try emitDbgStmt(gz, ret_lc);
|
|
8018
|
-
_ = try gz.addStrTok(.ret_err_value, err_name_str_index, ident_token);
|
|
8019
|
-
return Zir.Inst.Ref.unreachable_value;
|
|
8020
|
-
}
|
|
8021
|
-
const err_code = try gz.addStrTok(.ret_err_value_code, err_name_str_index, ident_token);
|
|
8022
|
-
try genDefers(gz, defer_outer, scope, .{ .both = err_code });
|
|
7934
|
+
try genDefers(gz, defer_outer, scope, .normal_and_error);
|
|
8023
7935
|
try emitDbgStmt(gz, ret_lc);
|
|
8024
|
-
_ = try gz.
|
|
8025
|
-
return
|
|
7936
|
+
_ = try gz.addStrTok(.ret_err_value, err_name_str_index, ident_token);
|
|
7937
|
+
return .unreachable_value;
|
|
8026
7938
|
}
|
|
8027
7939
|
|
|
8028
7940
|
const ri: ResultInfo = if (astgen.nodes_need_rl.contains(node)) .{
|
|
@@ -8049,15 +7961,13 @@ fn ret(gz: *GenZir, scope: *Scope, node: Ast.Node.Index) InnerError!Zir.Inst.Ref
|
|
|
8049
7961
|
},
|
|
8050
7962
|
.always => {
|
|
8051
7963
|
// Value is always an error. Emit both error defers and regular defers.
|
|
8052
|
-
|
|
8053
|
-
try genDefers(gz, defer_outer, scope, .{ .both = err_code });
|
|
7964
|
+
try genDefers(gz, defer_outer, scope, .normal_and_error);
|
|
8054
7965
|
try emitDbgStmt(gz, ret_lc);
|
|
8055
7966
|
try gz.addRet(ri, operand, node);
|
|
8056
7967
|
return Zir.Inst.Ref.unreachable_value;
|
|
8057
7968
|
},
|
|
8058
7969
|
.maybe => {
|
|
8059
|
-
|
|
8060
|
-
if (!defer_counts.have_err) {
|
|
7970
|
+
if (!anyErrdefers(defer_outer, scope)) {
|
|
8061
7971
|
// Only regular defers; no branch needed.
|
|
8062
7972
|
try genDefers(gz, defer_outer, scope, .normal_only);
|
|
8063
7973
|
try emitDbgStmt(gz, ret_lc);
|
|
@@ -8089,10 +7999,7 @@ fn ret(gz: *GenZir, scope: *Scope, node: Ast.Node.Index) InnerError!Zir.Inst.Ref
|
|
|
8089
7999
|
var else_scope = gz.makeSubBlock(scope);
|
|
8090
8000
|
defer else_scope.unstack();
|
|
8091
8001
|
|
|
8092
|
-
|
|
8093
|
-
.both = try else_scope.addUnNode(.err_union_code, result, node),
|
|
8094
|
-
};
|
|
8095
|
-
try genDefers(&else_scope, defer_outer, scope, which_ones);
|
|
8002
|
+
try genDefers(&else_scope, defer_outer, scope, .normal_and_error);
|
|
8096
8003
|
try emitDbgStmt(&else_scope, ret_lc);
|
|
8097
8004
|
try else_scope.addRet(ri, operand, node);
|
|
8098
8005
|
|
|
@@ -8151,39 +8058,42 @@ fn identifier(
|
|
|
8151
8058
|
return rvalue(gz, ri, zir_const_ref, ident);
|
|
8152
8059
|
}
|
|
8153
8060
|
|
|
8154
|
-
|
|
8155
|
-
|
|
8156
|
-
const
|
|
8157
|
-
|
|
8158
|
-
|
|
8159
|
-
|
|
8160
|
-
|
|
8161
|
-
|
|
8162
|
-
|
|
8163
|
-
|
|
8164
|
-
|
|
8165
|
-
|
|
8166
|
-
|
|
8167
|
-
|
|
8168
|
-
|
|
8169
|
-
|
|
8170
|
-
|
|
8171
|
-
|
|
8172
|
-
"primitive integer type '{s}' exceeds maximum bit width of 65535",
|
|
8173
|
-
.{ident_name_raw},
|
|
8174
|
-
),
|
|
8175
|
-
error.InvalidCharacter => break :integer,
|
|
8176
|
-
};
|
|
8177
|
-
const result = try gz.add(.{
|
|
8178
|
-
.tag = .int_type,
|
|
8179
|
-
.data = .{ .int_type = .{
|
|
8180
|
-
.src_node = gz.nodeIndexToRelative(ident),
|
|
8181
|
-
.signedness = signedness,
|
|
8182
|
-
.bit_count = bit_count,
|
|
8183
|
-
} },
|
|
8184
|
-
});
|
|
8185
|
-
return rvalue(gz, ri, result, ident);
|
|
8061
|
+
int_type: {
|
|
8062
|
+
if (ident_name_raw.len < 2) break :int_type;
|
|
8063
|
+
const signedness: std.lang.Signedness = switch (ident_name_raw[0]) {
|
|
8064
|
+
'u' => .unsigned,
|
|
8065
|
+
'i' => .signed,
|
|
8066
|
+
else => break :int_type,
|
|
8067
|
+
};
|
|
8068
|
+
// `u0` already handled by `primitive_instrs`
|
|
8069
|
+
if (std.mem.eql(u8, ident_name_raw, "i0")) {
|
|
8070
|
+
return astgen.failNode(ident, "signed integer cannot have bit width 0", .{});
|
|
8071
|
+
}
|
|
8072
|
+
if (ident_name_raw[1] == '0') {
|
|
8073
|
+
assert(ident_name_raw.len >= 3); // `u0` and `i0` handled
|
|
8074
|
+
return astgen.failNode(
|
|
8075
|
+
ident,
|
|
8076
|
+
"primitive integer type '{s}' has leading zero",
|
|
8077
|
+
.{ident_name_raw},
|
|
8078
|
+
);
|
|
8186
8079
|
}
|
|
8080
|
+
const bit_count = parseBitCount(ident_name_raw[1..]) catch |err| switch (err) {
|
|
8081
|
+
error.Overflow => return astgen.failNode(
|
|
8082
|
+
ident,
|
|
8083
|
+
"primitive integer type '{s}' exceeds maximum bit width of 65535",
|
|
8084
|
+
.{ident_name_raw},
|
|
8085
|
+
),
|
|
8086
|
+
error.InvalidCharacter => break :int_type,
|
|
8087
|
+
};
|
|
8088
|
+
const result = try gz.add(.{
|
|
8089
|
+
.tag = .int_type,
|
|
8090
|
+
.data = .{ .int_type = .{
|
|
8091
|
+
.src_node = gz.nodeIndexToRelative(ident),
|
|
8092
|
+
.signedness = signedness,
|
|
8093
|
+
.bit_count = bit_count,
|
|
8094
|
+
} },
|
|
8095
|
+
});
|
|
8096
|
+
return rvalue(gz, ri, result, ident);
|
|
8187
8097
|
}
|
|
8188
8098
|
}
|
|
8189
8099
|
|
|
@@ -8405,9 +8315,10 @@ fn tunnelThroughClosure(
|
|
|
8405
8315
|
|
|
8406
8316
|
// Otherwise we need a tunnel. First, figure out the path of namespaces we
|
|
8407
8317
|
// are tunneling through. This is usually only going to be one or two, so
|
|
8408
|
-
// use an
|
|
8409
|
-
var
|
|
8410
|
-
var
|
|
8318
|
+
// use an BFA to optimize for the common case.
|
|
8319
|
+
var bfa_buf: [2]usize = undefined;
|
|
8320
|
+
var bfa: std.heap.BufferFirstAllocator = .init(@ptrCast(&bfa_buf), astgen.arena);
|
|
8321
|
+
var intermediate_tunnels = try bfa.allocator().alloc(*Scope.Namespace, num_tunnels - 1);
|
|
8411
8322
|
|
|
8412
8323
|
const root_ns = ns: {
|
|
8413
8324
|
var i: usize = num_tunnels - 1;
|
|
@@ -8562,7 +8473,7 @@ fn numberLiteral(gz: *GenZir, ri: ResultInfo, node: Ast.Node.Index, source_node:
|
|
|
8562
8473
|
big_int.setString(@intFromEnum(base), bytes[prefix_offset..]) catch |err| switch (err) {
|
|
8563
8474
|
error.InvalidCharacter => unreachable, // caught in `parseNumberLiteral`
|
|
8564
8475
|
error.InvalidBase => unreachable, // we only pass 16, 8, 2, see above
|
|
8565
|
-
error.OutOfMemory => return
|
|
8476
|
+
error.OutOfMemory => |e| return e,
|
|
8566
8477
|
};
|
|
8567
8478
|
|
|
8568
8479
|
const limbs = big_int.limbs[0..big_int.len()];
|
|
@@ -8739,7 +8650,7 @@ fn asmExpr(
|
|
|
8739
8650
|
|
|
8740
8651
|
const clobbers: Zir.Inst.Ref = if (full.ast.clobbers.unwrap()) |clobbers_node|
|
|
8741
8652
|
try comptimeExpr(gz, scope, .{ .rl = .{
|
|
8742
|
-
.coerced_ty = try gz.
|
|
8653
|
+
.coerced_ty = try gz.addStdLangValue(clobbers_node, .clobbers),
|
|
8743
8654
|
} }, clobbers_node, .clobber)
|
|
8744
8655
|
else
|
|
8745
8656
|
.none;
|
|
@@ -8955,7 +8866,6 @@ fn typeOf(
|
|
|
8955
8866
|
var typeof_scope = gz.makeSubBlock(scope);
|
|
8956
8867
|
typeof_scope.is_comptime = false;
|
|
8957
8868
|
typeof_scope.is_typeof = true;
|
|
8958
|
-
typeof_scope.c_import = false;
|
|
8959
8869
|
defer typeof_scope.unstack();
|
|
8960
8870
|
|
|
8961
8871
|
const ty_expr = try reachableExpr(&typeof_scope, &typeof_scope.base, .{ .rl = .none }, args[0], node);
|
|
@@ -9055,8 +8965,7 @@ fn builtinCall(
|
|
|
9055
8965
|
const builtin_name = tree.tokenSlice(builtin_token);
|
|
9056
8966
|
|
|
9057
8967
|
// We handle the different builtins manually because they have different semantics depending
|
|
9058
|
-
// on the function. For example, `@as` and others participate in result location semantics
|
|
9059
|
-
// and `@cImport` creates a special scope that collects a .c source code text buffer.
|
|
8968
|
+
// on the function. For example, `@as` and others participate in result location semantics.
|
|
9060
8969
|
// Also, some builtins have a variable number of parameters.
|
|
9061
8970
|
|
|
9062
8971
|
const info = BuiltinFn.list.get(builtin_name) orelse {
|
|
@@ -9083,7 +8992,7 @@ fn builtinCall(
|
|
|
9083
8992
|
if (!allow_branch_hint) {
|
|
9084
8993
|
return astgen.failNode(node, "'@branchHint' must appear as the first statement in a function or conditional branch", .{});
|
|
9085
8994
|
}
|
|
9086
|
-
const hint_ty = try gz.
|
|
8995
|
+
const hint_ty = try gz.addStdLangValue(node, .branch_hint);
|
|
9087
8996
|
const hint_val = try comptimeExpr(gz, scope, .{ .rl = .{ .coerced_ty = hint_ty } }, params[0], .operand_branchHint);
|
|
9088
8997
|
_ = try gz.addExtendedPayload(.branch_hint, Zir.Inst.UnNode{
|
|
9089
8998
|
.node = gz.nodeIndexToRelative(node),
|
|
@@ -9175,14 +9084,13 @@ fn builtinCall(
|
|
|
9175
9084
|
.bit_cast => return bitCast( gz, scope, ri, node, params[0]),
|
|
9176
9085
|
.TypeOf => return typeOf( gz, scope, ri, node, params),
|
|
9177
9086
|
.union_init => return unionInit(gz, scope, ri, node, params),
|
|
9178
|
-
.c_import => return cImport( gz, scope, node, params[0]),
|
|
9179
9087
|
.min => return minMax( gz, scope, ri, node, params, .min),
|
|
9180
9088
|
.max => return minMax( gz, scope, ri, node, params, .max),
|
|
9181
9089
|
// zig fmt: on
|
|
9182
9090
|
|
|
9183
9091
|
.@"export" => {
|
|
9184
9092
|
const exported = try expr(gz, scope, .{ .rl = .none }, params[0]);
|
|
9185
|
-
const export_options_ty = try gz.
|
|
9093
|
+
const export_options_ty = try gz.addStdLangValue(node, .export_options);
|
|
9186
9094
|
const options = try comptimeExpr(gz, scope, .{ .rl = .{ .coerced_ty = export_options_ty } }, params[1], .export_options);
|
|
9187
9095
|
_ = try gz.addPlNode(.@"export", node, Zir.Inst.Export{
|
|
9188
9096
|
.exported = exported,
|
|
@@ -9192,7 +9100,7 @@ fn builtinCall(
|
|
|
9192
9100
|
},
|
|
9193
9101
|
.@"extern" => {
|
|
9194
9102
|
const type_inst = try typeExpr(gz, scope, params[0]);
|
|
9195
|
-
const extern_options_ty = try gz.
|
|
9103
|
+
const extern_options_ty = try gz.addStdLangValue(node, .extern_options);
|
|
9196
9104
|
const options = try comptimeExpr(gz, scope, .{ .rl = .{ .coerced_ty = extern_options_ty } }, params[1], .extern_options);
|
|
9197
9105
|
const result = try gz.addExtendedPayload(.builtin_extern, Zir.Inst.BinNode{
|
|
9198
9106
|
.node = gz.nodeIndexToRelative(node),
|
|
@@ -9202,7 +9110,7 @@ fn builtinCall(
|
|
|
9202
9110
|
return rvalue(gz, ri, result, node);
|
|
9203
9111
|
},
|
|
9204
9112
|
.set_float_mode => {
|
|
9205
|
-
const float_mode_ty = try gz.
|
|
9113
|
+
const float_mode_ty = try gz.addStdLangValue(node, .float_mode);
|
|
9206
9114
|
const order = try expr(gz, scope, .{ .rl = .{ .coerced_ty = float_mode_ty } }, params[0]);
|
|
9207
9115
|
_ = try gz.addExtendedPayload(.set_float_mode, Zir.Inst.UnNode{
|
|
9208
9116
|
.node = gz.nodeIndexToRelative(node),
|
|
@@ -9288,7 +9196,7 @@ fn builtinCall(
|
|
|
9288
9196
|
|
|
9289
9197
|
.EnumLiteral => return rvalue(gz, ri, .enum_literal_type, node),
|
|
9290
9198
|
.Int => {
|
|
9291
|
-
const signedness_ty = try gz.
|
|
9199
|
+
const signedness_ty = try gz.addStdLangValue(node, .signedness);
|
|
9292
9200
|
const result = try gz.addPlNode(.reify_int, node, Zir.Inst.Bin{
|
|
9293
9201
|
.lhs = try comptimeExpr(gz, scope, .{ .rl = .{ .coerced_ty = signedness_ty } }, params[0], .int_signedness),
|
|
9294
9202
|
.rhs = try comptimeExpr(gz, scope, .{ .rl = .{ .coerced_ty = .u16_type } }, params[1], .int_bit_width),
|
|
@@ -9303,8 +9211,8 @@ fn builtinCall(
|
|
|
9303
9211
|
return rvalue(gz, ri, result, node);
|
|
9304
9212
|
},
|
|
9305
9213
|
.Pointer => {
|
|
9306
|
-
const ptr_size_ty = try gz.
|
|
9307
|
-
const ptr_attrs_ty = try gz.
|
|
9214
|
+
const ptr_size_ty = try gz.addStdLangValue(node, .pointer_size);
|
|
9215
|
+
const ptr_attrs_ty = try gz.addStdLangValue(node, .pointer_attributes);
|
|
9308
9216
|
const size = try comptimeExpr(gz, scope, .{ .rl = .{ .coerced_ty = ptr_size_ty } }, params[0], .pointer_size);
|
|
9309
9217
|
const attrs = try comptimeExpr(gz, scope, .{ .rl = .{ .coerced_ty = ptr_attrs_ty } }, params[1], .pointer_attrs);
|
|
9310
9218
|
const elem_ty = try typeExpr(gz, scope, params[2]);
|
|
@@ -9323,7 +9231,7 @@ fn builtinCall(
|
|
|
9323
9231
|
return rvalue(gz, ri, result, node);
|
|
9324
9232
|
},
|
|
9325
9233
|
.Fn => {
|
|
9326
|
-
const fn_attrs_ty = try gz.
|
|
9234
|
+
const fn_attrs_ty = try gz.addStdLangValue(node, .fn_attributes);
|
|
9327
9235
|
const param_types = try comptimeExpr(gz, scope, .{ .rl = .{ .coerced_ty = .slice_const_type_type } }, params[0], .fn_param_types);
|
|
9328
9236
|
const param_attrs_ty = try gz.addExtendedPayloadSmall(
|
|
9329
9237
|
.reify_slice_arg_ty,
|
|
@@ -9343,7 +9251,7 @@ fn builtinCall(
|
|
|
9343
9251
|
return rvalue(gz, ri, result, node);
|
|
9344
9252
|
},
|
|
9345
9253
|
.Struct => {
|
|
9346
|
-
const container_layout_ty = try gz.
|
|
9254
|
+
const container_layout_ty = try gz.addStdLangValue(node, .container_layout);
|
|
9347
9255
|
const layout = try comptimeExpr(gz, scope, .{ .rl = .{ .coerced_ty = container_layout_ty } }, params[0], .struct_layout);
|
|
9348
9256
|
const backing_ty = try comptimeExpr(gz, scope, .{ .rl = .{ .coerced_ty = .optional_type_type } }, params[1], .type);
|
|
9349
9257
|
const field_names = try comptimeExpr(gz, scope, .{ .rl = .{ .coerced_ty = .slice_const_slice_const_u8_type } }, params[2], .struct_field_names);
|
|
@@ -9371,7 +9279,7 @@ fn builtinCall(
|
|
|
9371
9279
|
return rvalue(gz, ri, result, node);
|
|
9372
9280
|
},
|
|
9373
9281
|
.Union => {
|
|
9374
|
-
const container_layout_ty = try gz.
|
|
9282
|
+
const container_layout_ty = try gz.addStdLangValue(node, .container_layout);
|
|
9375
9283
|
const layout = try comptimeExpr(gz, scope, .{ .rl = .{ .coerced_ty = container_layout_ty } }, params[0], .union_layout);
|
|
9376
9284
|
const arg_ty = try comptimeExpr(gz, scope, .{ .rl = .{ .coerced_ty = .optional_type_type } }, params[1], .type);
|
|
9377
9285
|
const field_names = try comptimeExpr(gz, scope, .{ .rl = .{ .coerced_ty = .slice_const_slice_const_u8_type } }, params[2], .union_field_names);
|
|
@@ -9399,7 +9307,7 @@ fn builtinCall(
|
|
|
9399
9307
|
return rvalue(gz, ri, result, node);
|
|
9400
9308
|
},
|
|
9401
9309
|
.Enum => {
|
|
9402
|
-
const enum_mode_ty = try gz.
|
|
9310
|
+
const enum_mode_ty = try gz.addStdLangValue(node, .enum_mode);
|
|
9403
9311
|
const tag_ty = try typeExpr(gz, scope, params[0]);
|
|
9404
9312
|
const mode = try comptimeExpr(gz, scope, .{ .rl = .{ .coerced_ty = enum_mode_ty } }, params[1], .type);
|
|
9405
9313
|
const field_names = try comptimeExpr(gz, scope, .{ .rl = .{ .coerced_ty = .slice_const_slice_const_u8_type } }, params[2], .enum_field_names);
|
|
@@ -9484,9 +9392,6 @@ fn builtinCall(
|
|
|
9484
9392
|
.bit_offset_of => return offsetOf(gz, scope, ri, node, params[0], params[1], .bit_offset_of),
|
|
9485
9393
|
.offset_of => return offsetOf(gz, scope, ri, node, params[0], params[1], .offset_of),
|
|
9486
9394
|
|
|
9487
|
-
.c_undef => return simpleCBuiltin(gz, scope, ri, node, params[0], .c_undef),
|
|
9488
|
-
.c_include => return simpleCBuiltin(gz, scope, ri, node, params[0], .c_include),
|
|
9489
|
-
|
|
9490
9395
|
.cmpxchg_strong => return cmpxchg(gz, scope, ri, node, params, 1),
|
|
9491
9396
|
.cmpxchg_weak => return cmpxchg(gz, scope, ri, node, params, 0),
|
|
9492
9397
|
// zig fmt: on
|
|
@@ -9509,17 +9414,6 @@ fn builtinCall(
|
|
|
9509
9414
|
});
|
|
9510
9415
|
return rvalue(gz, ri, result, node);
|
|
9511
9416
|
},
|
|
9512
|
-
.c_define => {
|
|
9513
|
-
if (!gz.c_import) return gz.astgen.failNode(node, "C define valid only inside C import block", .{});
|
|
9514
|
-
const name = try comptimeExpr(gz, scope, .{ .rl = .{ .coerced_ty = .slice_const_u8_type } }, params[0], .operand_cDefine_macro_name);
|
|
9515
|
-
const value = try comptimeExpr(gz, scope, .{ .rl = .none }, params[1], .operand_cDefine_macro_value);
|
|
9516
|
-
const result = try gz.addExtendedPayload(.c_define, Zir.Inst.BinNode{
|
|
9517
|
-
.node = gz.nodeIndexToRelative(node),
|
|
9518
|
-
.lhs = name,
|
|
9519
|
-
.rhs = value,
|
|
9520
|
-
});
|
|
9521
|
-
return rvalue(gz, ri, result, node);
|
|
9522
|
-
},
|
|
9523
9417
|
.splat => {
|
|
9524
9418
|
const result_type = try ri.rl.resultTypeForCast(gz, node, builtin_name);
|
|
9525
9419
|
const elem_type = try gz.addUnNode(.splat_op_result_ty, result_type, node);
|
|
@@ -9531,7 +9425,7 @@ fn builtinCall(
|
|
|
9531
9425
|
return rvalue(gz, ri, result, node);
|
|
9532
9426
|
},
|
|
9533
9427
|
.reduce => {
|
|
9534
|
-
const reduce_op_ty = try gz.
|
|
9428
|
+
const reduce_op_ty = try gz.addStdLangValue(node, .reduce_op);
|
|
9535
9429
|
const op = try expr(gz, scope, .{ .rl = .{ .coerced_ty = reduce_op_ty } }, params[0]);
|
|
9536
9430
|
const scalar = try expr(gz, scope, .{ .rl = .none }, params[1]);
|
|
9537
9431
|
const result = try gz.addPlNode(.reduce, node, Zir.Inst.Bin{
|
|
@@ -9547,7 +9441,7 @@ fn builtinCall(
|
|
|
9547
9441
|
.shl_with_overflow => return overflowArithmetic(gz, scope, ri, node, params, .shl_with_overflow),
|
|
9548
9442
|
|
|
9549
9443
|
.atomic_load => {
|
|
9550
|
-
const atomic_order_type = try gz.
|
|
9444
|
+
const atomic_order_type = try gz.addStdLangValue(node, .atomic_order);
|
|
9551
9445
|
const result = try gz.addPlNode(.atomic_load, node, Zir.Inst.AtomicLoad{
|
|
9552
9446
|
// zig fmt: off
|
|
9553
9447
|
.elem_type = try typeExpr(gz, scope, params[0]),
|
|
@@ -9558,8 +9452,8 @@ fn builtinCall(
|
|
|
9558
9452
|
return rvalue(gz, ri, result, node);
|
|
9559
9453
|
},
|
|
9560
9454
|
.atomic_rmw => {
|
|
9561
|
-
const atomic_order_type = try gz.
|
|
9562
|
-
const atomic_rmw_op_type = try gz.
|
|
9455
|
+
const atomic_order_type = try gz.addStdLangValue(node, .atomic_order);
|
|
9456
|
+
const atomic_rmw_op_type = try gz.addStdLangValue(node, .atomic_rmw_op);
|
|
9563
9457
|
const int_type = try typeExpr(gz, scope, params[0]);
|
|
9564
9458
|
const result = try gz.addPlNode(.atomic_rmw, node, Zir.Inst.AtomicRmw{
|
|
9565
9459
|
// zig fmt: off
|
|
@@ -9572,7 +9466,7 @@ fn builtinCall(
|
|
|
9572
9466
|
return rvalue(gz, ri, result, node);
|
|
9573
9467
|
},
|
|
9574
9468
|
.atomic_store => {
|
|
9575
|
-
const atomic_order_type = try gz.
|
|
9469
|
+
const atomic_order_type = try gz.addStdLangValue(node, .atomic_order);
|
|
9576
9470
|
const int_type = try typeExpr(gz, scope, params[0]);
|
|
9577
9471
|
_ = try gz.addPlNode(.atomic_store, node, Zir.Inst.AtomicStore{
|
|
9578
9472
|
// zig fmt: off
|
|
@@ -9596,7 +9490,7 @@ fn builtinCall(
|
|
|
9596
9490
|
return rvalue(gz, ri, result, node);
|
|
9597
9491
|
},
|
|
9598
9492
|
.call => {
|
|
9599
|
-
const call_modifier_ty = try gz.
|
|
9493
|
+
const call_modifier_ty = try gz.addStdLangValue(node, .call_modifier);
|
|
9600
9494
|
const modifier = try comptimeExpr(gz, scope, .{ .rl = .{ .coerced_ty = call_modifier_ty } }, params[0], .call_modifier);
|
|
9601
9495
|
const callee = try expr(gz, scope, .{ .rl = .none }, params[1]);
|
|
9602
9496
|
const args = try expr(gz, scope, .{ .rl = .none }, params[2]);
|
|
@@ -9673,7 +9567,7 @@ fn builtinCall(
|
|
|
9673
9567
|
return rvalue(gz, ri, result, node);
|
|
9674
9568
|
},
|
|
9675
9569
|
.prefetch => {
|
|
9676
|
-
const prefetch_options_ty = try gz.
|
|
9570
|
+
const prefetch_options_ty = try gz.addStdLangValue(node, .prefetch_options);
|
|
9677
9571
|
const ptr = try expr(gz, scope, .{ .rl = .none }, params[0]);
|
|
9678
9572
|
const options = try comptimeExpr(gz, scope, .{ .rl = .{ .coerced_ty = prefetch_options_ty } }, params[1], .prefetch_options);
|
|
9679
9573
|
_ = try gz.addExtendedPayload(.prefetch, Zir.Inst.BinNode{
|
|
@@ -9906,7 +9800,7 @@ fn cmpxchg(
|
|
|
9906
9800
|
small: u16,
|
|
9907
9801
|
) InnerError!Zir.Inst.Ref {
|
|
9908
9802
|
const int_type = try typeExpr(gz, scope, params[0]);
|
|
9909
|
-
const atomic_order_type = try gz.
|
|
9803
|
+
const atomic_order_type = try gz.addStdLangValue(node, .atomic_order);
|
|
9910
9804
|
const result = try gz.addExtendedPayloadSmall(.cmpxchg, small, Zir.Inst.Cmpxchg{
|
|
9911
9805
|
// zig fmt: off
|
|
9912
9806
|
.node = gz.nodeIndexToRelative(node),
|
|
@@ -9951,30 +9845,6 @@ fn divBuiltin(
|
|
|
9951
9845
|
return rvalue(gz, ri, result, node);
|
|
9952
9846
|
}
|
|
9953
9847
|
|
|
9954
|
-
fn simpleCBuiltin(
|
|
9955
|
-
gz: *GenZir,
|
|
9956
|
-
scope: *Scope,
|
|
9957
|
-
ri: ResultInfo,
|
|
9958
|
-
node: Ast.Node.Index,
|
|
9959
|
-
operand_node: Ast.Node.Index,
|
|
9960
|
-
tag: Zir.Inst.Extended,
|
|
9961
|
-
) InnerError!Zir.Inst.Ref {
|
|
9962
|
-
const name: []const u8 = if (tag == .c_undef) "C undef" else "C include";
|
|
9963
|
-
if (!gz.c_import) return gz.astgen.failNode(node, "{s} valid only inside C import block", .{name});
|
|
9964
|
-
const operand = try comptimeExpr(
|
|
9965
|
-
gz,
|
|
9966
|
-
scope,
|
|
9967
|
-
.{ .rl = .{ .coerced_ty = .slice_const_u8_type } },
|
|
9968
|
-
operand_node,
|
|
9969
|
-
if (tag == .c_undef) .operand_cUndef_macro_name else .operand_cInclude_file_name,
|
|
9970
|
-
);
|
|
9971
|
-
_ = try gz.addExtendedPayload(tag, Zir.Inst.UnNode{
|
|
9972
|
-
.node = gz.nodeIndexToRelative(node),
|
|
9973
|
-
.operand = operand,
|
|
9974
|
-
});
|
|
9975
|
-
return rvalue(gz, ri, .void_value, node);
|
|
9976
|
-
}
|
|
9977
|
-
|
|
9978
9848
|
fn offsetOf(
|
|
9979
9849
|
gz: *GenZir,
|
|
9980
9850
|
scope: *Scope,
|
|
@@ -10024,35 +9894,6 @@ fn shiftOp(
|
|
|
10024
9894
|
return rvalue(gz, ri, result, node);
|
|
10025
9895
|
}
|
|
10026
9896
|
|
|
10027
|
-
fn cImport(
|
|
10028
|
-
gz: *GenZir,
|
|
10029
|
-
scope: *Scope,
|
|
10030
|
-
node: Ast.Node.Index,
|
|
10031
|
-
body_node: Ast.Node.Index,
|
|
10032
|
-
) InnerError!Zir.Inst.Ref {
|
|
10033
|
-
const astgen = gz.astgen;
|
|
10034
|
-
const gpa = astgen.gpa;
|
|
10035
|
-
|
|
10036
|
-
if (gz.c_import) return gz.astgen.failNode(node, "cannot nest @cImport", .{});
|
|
10037
|
-
|
|
10038
|
-
var block_scope = gz.makeSubBlock(scope);
|
|
10039
|
-
block_scope.is_comptime = true;
|
|
10040
|
-
block_scope.c_import = true;
|
|
10041
|
-
defer block_scope.unstack();
|
|
10042
|
-
|
|
10043
|
-
const block_inst = try gz.makeBlockInst(.c_import, node);
|
|
10044
|
-
const block_result = try fullBodyExpr(&block_scope, &block_scope.base, .{ .rl = .none }, body_node, .normal);
|
|
10045
|
-
_ = try gz.addUnNode(.ensure_result_used, block_result, node);
|
|
10046
|
-
if (!gz.refIsNoReturn(block_result)) {
|
|
10047
|
-
_ = try block_scope.addBreak(.break_inline, block_inst, .void_value);
|
|
10048
|
-
}
|
|
10049
|
-
try block_scope.setBlockBody(block_inst);
|
|
10050
|
-
// block_scope unstacked now, can add new instructions to gz
|
|
10051
|
-
try gz.instructions.append(gpa, block_inst);
|
|
10052
|
-
|
|
10053
|
-
return block_inst.toRef();
|
|
10054
|
-
}
|
|
10055
|
-
|
|
10056
9897
|
fn overflowArithmetic(
|
|
10057
9898
|
gz: *GenZir,
|
|
10058
9899
|
scope: *Scope,
|
|
@@ -10084,7 +9925,7 @@ fn callExpr(
|
|
|
10084
9925
|
const astgen = gz.astgen;
|
|
10085
9926
|
|
|
10086
9927
|
const callee = try calleeExpr(gz, scope, ri.rl, override_decl_literal_type, call.ast.fn_expr);
|
|
10087
|
-
const modifier: std.
|
|
9928
|
+
const modifier: std.lang.CallModifier = blk: {
|
|
10088
9929
|
if (gz.nosuspend_node != .none) {
|
|
10089
9930
|
break :blk .no_suspend;
|
|
10090
9931
|
}
|
|
@@ -10269,32 +10110,37 @@ const primitive_instrs = std.StaticStringMap(Zir.Inst.Ref).initComptime(.{
|
|
|
10269
10110
|
.{ "c_ushort", .c_ushort_type },
|
|
10270
10111
|
.{ "comptime_float", .comptime_float_type },
|
|
10271
10112
|
.{ "comptime_int", .comptime_int_type },
|
|
10272
|
-
.{ "f128", .f128_type },
|
|
10273
|
-
.{ "f16", .f16_type },
|
|
10274
|
-
.{ "f32", .f32_type },
|
|
10275
|
-
.{ "f64", .f64_type },
|
|
10276
|
-
.{ "f80", .f80_type },
|
|
10277
10113
|
.{ "false", .bool_false },
|
|
10278
|
-
.{ "i16", .i16_type },
|
|
10279
|
-
.{ "i32", .i32_type },
|
|
10280
|
-
.{ "i64", .i64_type },
|
|
10281
|
-
.{ "i128", .i128_type },
|
|
10282
|
-
.{ "i8", .i8_type },
|
|
10283
|
-
.{ "isize", .isize_type },
|
|
10284
10114
|
.{ "noreturn", .noreturn_type },
|
|
10285
10115
|
.{ "null", .null_value },
|
|
10286
10116
|
.{ "true", .bool_true },
|
|
10287
10117
|
.{ "type", .type_type },
|
|
10118
|
+
.{ "undefined", .undef },
|
|
10119
|
+
.{ "void", .void_type },
|
|
10120
|
+
|
|
10121
|
+
.{ "f16", .f16_type },
|
|
10122
|
+
.{ "f32", .f32_type },
|
|
10123
|
+
.{ "f64", .f64_type },
|
|
10124
|
+
.{ "f80", .f80_type },
|
|
10125
|
+
.{ "f128", .f128_type },
|
|
10126
|
+
|
|
10127
|
+
.{ "u0", .u0_type },
|
|
10128
|
+
.{ "u1", .u1_type },
|
|
10129
|
+
.{ "u8", .u8_type },
|
|
10130
|
+
.{ "i8", .i8_type },
|
|
10288
10131
|
.{ "u16", .u16_type },
|
|
10132
|
+
.{ "i16", .i16_type },
|
|
10289
10133
|
.{ "u29", .u29_type },
|
|
10290
10134
|
.{ "u32", .u32_type },
|
|
10135
|
+
.{ "i32", .i32_type },
|
|
10291
10136
|
.{ "u64", .u64_type },
|
|
10137
|
+
.{ "i64", .i64_type },
|
|
10138
|
+
.{ "u80", .u80_type },
|
|
10292
10139
|
.{ "u128", .u128_type },
|
|
10293
|
-
.{ "
|
|
10294
|
-
.{ "
|
|
10295
|
-
.{ "undefined", .undef },
|
|
10140
|
+
.{ "i128", .i128_type },
|
|
10141
|
+
.{ "u256", .u256_type },
|
|
10296
10142
|
.{ "usize", .usize_type },
|
|
10297
|
-
.{ "
|
|
10143
|
+
.{ "isize", .isize_type },
|
|
10298
10144
|
});
|
|
10299
10145
|
|
|
10300
10146
|
comptime {
|
|
@@ -10446,7 +10292,6 @@ fn nodeMayEvalToError(tree: *const Ast, start_node: Ast.Node.Index) BuiltinFn.Ev
|
|
|
10446
10292
|
.add_wrap,
|
|
10447
10293
|
.add_sat,
|
|
10448
10294
|
.array_cat,
|
|
10449
|
-
.array_mult,
|
|
10450
10295
|
.assign,
|
|
10451
10296
|
.assign_destructure,
|
|
10452
10297
|
.assign_bit_and,
|
|
@@ -11286,7 +11131,6 @@ const Scope = struct {
|
|
|
11286
11131
|
parent: *Scope,
|
|
11287
11132
|
index: u32,
|
|
11288
11133
|
len: u32,
|
|
11289
|
-
remapped_err_code: Zir.Inst.OptionalIndex = .none,
|
|
11290
11134
|
};
|
|
11291
11135
|
|
|
11292
11136
|
/// Represents a global scope that has any number of declarations in it.
|
|
@@ -11339,7 +11183,6 @@ const GenZir = struct {
|
|
|
11339
11183
|
/// This is set to true for a `GenZir` of a `block_inline`, indicating that
|
|
11340
11184
|
/// exits from this block should use `break_inline` rather than `break`.
|
|
11341
11185
|
is_inline: bool = false,
|
|
11342
|
-
c_import: bool = false,
|
|
11343
11186
|
/// The containing decl AST node.
|
|
11344
11187
|
decl_node_index: Ast.Node.Index,
|
|
11345
11188
|
/// The containing decl line index, absolute.
|
|
@@ -11427,7 +11270,6 @@ const GenZir = struct {
|
|
|
11427
11270
|
return .{
|
|
11428
11271
|
.is_comptime = gz.is_comptime,
|
|
11429
11272
|
.is_typeof = gz.is_typeof,
|
|
11430
|
-
.c_import = gz.c_import,
|
|
11431
11273
|
.decl_node_index = gz.decl_node_index,
|
|
11432
11274
|
.decl_line = gz.decl_line,
|
|
11433
11275
|
.parent = scope,
|
|
@@ -11959,8 +11801,8 @@ const GenZir = struct {
|
|
|
11959
11801
|
return new_index;
|
|
11960
11802
|
}
|
|
11961
11803
|
|
|
11962
|
-
fn
|
|
11963
|
-
return addExtendedNodeSmall(gz, .
|
|
11804
|
+
fn addStdLangValue(gz: *GenZir, src_node: Ast.Node.Index, val: Zir.Inst.StdLangValue) !Zir.Inst.Ref {
|
|
11805
|
+
return addExtendedNodeSmall(gz, .std_lang_value, src_node, @intFromEnum(val));
|
|
11964
11806
|
}
|
|
11965
11807
|
|
|
11966
11808
|
fn addExtendedPayload(gz: *GenZir, opcode: Zir.Inst.Extended, extra: anytype) !Zir.Inst.Ref {
|
|
@@ -12508,7 +12350,7 @@ const GenZir = struct {
|
|
|
12508
12350
|
fn setStruct(gz: *GenZir, inst: Zir.Inst.Index, args: struct {
|
|
12509
12351
|
src_node: Ast.Node.Index,
|
|
12510
12352
|
name_strat: Zir.Inst.NameStrategy,
|
|
12511
|
-
layout: std.
|
|
12353
|
+
layout: std.lang.Type.ContainerLayout,
|
|
12512
12354
|
backing_int_type_body_len: ?u32,
|
|
12513
12355
|
decls_len: u32,
|
|
12514
12356
|
fields_len: u32,
|
|
@@ -12999,17 +12841,18 @@ fn scanContainer(
|
|
|
12999
12841
|
next: ?*@This(),
|
|
13000
12842
|
};
|
|
13001
12843
|
|
|
13002
|
-
// The maps below are allocated into this
|
|
13003
|
-
var
|
|
13004
|
-
|
|
12844
|
+
// The maps below are allocated into this BFA to avoid using the GPA for small namespaces.
|
|
12845
|
+
var bfa_buf: [512]u8 = undefined;
|
|
12846
|
+
var bfa_state: std.heap.BufferFirstAllocator = .init(&bfa_buf, astgen.gpa);
|
|
12847
|
+
const bfa = bfa_state.allocator();
|
|
13005
12848
|
|
|
13006
12849
|
var names: std.AutoArrayHashMapUnmanaged(Zir.NullTerminatedString, NameEntry) = .empty;
|
|
13007
12850
|
var test_names: std.AutoArrayHashMapUnmanaged(Zir.NullTerminatedString, NameEntry) = .empty;
|
|
13008
12851
|
var decltest_names: std.AutoArrayHashMapUnmanaged(Zir.NullTerminatedString, NameEntry) = .empty;
|
|
13009
12852
|
defer {
|
|
13010
|
-
names.deinit(
|
|
13011
|
-
test_names.deinit(
|
|
13012
|
-
decltest_names.deinit(
|
|
12853
|
+
names.deinit(bfa);
|
|
12854
|
+
test_names.deinit(bfa);
|
|
12855
|
+
decltest_names.deinit(bfa);
|
|
13013
12856
|
}
|
|
13014
12857
|
|
|
13015
12858
|
var any_duplicates = false;
|
|
@@ -13081,7 +12924,7 @@ fn scanContainer(
|
|
|
13081
12924
|
else => {}, // unnamed test
|
|
13082
12925
|
.string_literal => {
|
|
13083
12926
|
const name = try astgen.strLitAsString(test_name_token);
|
|
13084
|
-
const gop = try test_names.getOrPut(
|
|
12927
|
+
const gop = try test_names.getOrPut(bfa, name.index);
|
|
13085
12928
|
if (gop.found_existing) {
|
|
13086
12929
|
var e = gop.value_ptr;
|
|
13087
12930
|
while (e.next) |n| e = n;
|
|
@@ -13094,7 +12937,7 @@ fn scanContainer(
|
|
|
13094
12937
|
},
|
|
13095
12938
|
.identifier => {
|
|
13096
12939
|
const name = try astgen.identAsString(test_name_token);
|
|
13097
|
-
const gop = try decltest_names.getOrPut(
|
|
12940
|
+
const gop = try decltest_names.getOrPut(bfa, name);
|
|
13098
12941
|
if (gop.found_existing) {
|
|
13099
12942
|
var e = gop.value_ptr;
|
|
13100
12943
|
while (e.next) |n| e = n;
|
|
@@ -13121,7 +12964,7 @@ fn scanContainer(
|
|
|
13121
12964
|
}
|
|
13122
12965
|
|
|
13123
12966
|
{
|
|
13124
|
-
const gop = try names.getOrPut(
|
|
12967
|
+
const gop = try names.getOrPut(bfa, name_str_index);
|
|
13125
12968
|
const new_ent: NameEntry = .{
|
|
13126
12969
|
.tok = name_token,
|
|
13127
12970
|
.next = null,
|