ืืืืจ ืฉืืฉื ืืืืฉื ืคืืชืื, ืฉืืืจืจื LLVM 22.1.0. ืืื ืืคืชืืช ืืืื (ืืืืจืื, ืืืคืืืืืืฆืืืช ืืืืืืื ืงืื) ืืฉืจ ืืืืจืื ืชืืื ืืืช ืืงืื ืืื ืืื ืฉื ืืืจืืืช ืืืจืืืืืืืช ืืืืืืช RISC (ืืืื ื ืืืจืืืืืืช ืืจืื ื ืืืื ืขื ืืขืจืืช ืืืคืืืืืืฆืื ืืจืืืช ืจืืืช). ื ืืชื ืืืืืจ ืืช ืืคืกืืืื-ืงืื ืฉื ืืฆืจ ืืงืื ืืืื ื ืขืืืจ ืคืืืคืืจืืช ืืขื ื ืชืื ื ืื ืืืฉืชืืฉ ืื ืขื ืืื ืืืืจ JIT (Just-in-Time) ืืื ืืืฆืืจ ืืืจืืืช ืืืื ื ืืฉืืจืืช ืืืืื ืืืฆืืข ืืชืืื ืืช. ืืืชืืกืก ืขื ืืื ืืืืืืืช LLVM, ืืคืจืืืงื ืืคืชื ืืช ืืืืจ Clang, ืืชืืื ืืฉืคืืช ืืชืื ืืช C, C++ ื-Objective-C. ืืื ืืขื ืฃ 18.x, ืืคืจืืืงื ืขืืจ ืืกืืืืช ืืกืคืืจ ืืจืกืืืช ืืืฉื, ืืคืื ืืจืกื 0 ("N.0") ืืฉืืฉืช ืืืืื ืืคืืชืื, ืืืืจืกื ืืืฆืืื ืืจืืฉืื ื ืืืืกืคืจืช "N.1".
ืฉืืคืืจืื ื-Clang 22 ืืืืืื:
- ื ืืกืคื ืชืืืื ืืืกืืืื ื ืืงืฆืืช ืืืืจืื (Allocation Tokens) ืืกืืืื ืคืขืืืืช ืืงืฆืืช ืืืืจืื ืืืืืฆืขืืช ืืืืฆืขืืช ืคืื ืงืฆืืืช ืืืื malloc ืขื ืืืื ืืืืืื. ืืกืืืื ื ืืงืฆืื ืืืคืฉืจืื ืืื ื ืืืืข ืขืจืืื, ืคืืฉืื ืืืืื ืืืืคืืช ืืืืจืื ืืืืคืฉืจืื ืงืืืืฅ ืฉื ืืืืืืงืืื ืขื ืกืื ืืืขืืื ืื ืืคืืกื ืฉืื ืื (ืืืฉื, ืืคืจืืช ื ืชืื ืื "ืืืื" ื"ืงืจืื"). ืืื ืืืคืขืื, ืืฉืชืืฉ ืืืื "-fsanitize=alloc-token".
- ืชืืื ืืช ืืงืฉืืจืืช ืืฉืคืช C:
- ืืืืืช ืืคืจื ืืืืืืจื ืืช ืื ืื ืื ืืืืฆืืข ืื ืืื "defer" ืืืฉื, ืืืืคืฉืจ ืืืฆืืข ืคืขืืืืช ืืืฉืจ ืืืืงืฃ ืื ืืืื ืืืฆื. ืืืื "-fdefer-ts" ื ืืกืฃ ืืื ืืืคืฉืจ ืชืืืื ื-"defer".
- ืืคืื ืงืฆืื ืืืืื ืืช __builtin_stack_address() ื ืืกืคื, ืืืฉืงืคืช ืืช ืืคืื ืงืฆืื ืืืืื ื-GCC. ืคืื ืงืฆืื ืื ืืืืืจื ืืช ืืชืืืช ื-stack ืืืคืจืืื ืืื ืืืืจ ื-stack ืฉื ืืคืื ืงืฆืื ืื ืืืืืช ืฉืงืจืื ื-__builtin_stack_address() ืืืื ืืคืื ืงืฆืืืช ืืืืืช ืฉืืื ืงืืจืืช ืืื.
- ืืืืืืช ืืืคืืชืืืช ืขืืืจ ืชืงื C2y ืืขืชืืื:
- ื ืืกืคื ืชืืืื ืืืืืืืช ืืขืืืช ืฉื, ืืืืคืฉืจืช ืื ืืืงืฆืืช ืฉืืืช ืืืืืืืช ืืคืงืืืืช switch, ืืืชื ื ืืชื ืืฆืืื ืืคืงืืืืช break ื-continue ืืื ืืืืืืจ ืืืคืืจืฉ ืืช ืืืืืื ืืื ื ืืฉ ืืฆืืช. outer: for (int i = 0; i < IK; ++ i) { for (int j = 0; j < JK; ++ j) { continue; // ืขืืืจ ืื CONT1 continue outer; // ืขืืืจ ืื CONT2 // CONT1 } // CONT2 }
- ืืืฉืื ืืืืงืจื ืืืืื ื "__COUNTER__", ืฉื ืืขื ืืืฆืืจ ืฉืืืช ืืืืื ืืืืืืืื, ืืืจืื ืื ืืื ืืชืงื. ื ืงืืขื ืืืืื ืฉื 2147483647 ืงืจืืืืช ืืืงืจื ืื; ืืจืืื ืืืืืื ืื ืชืืฆืืจ ืฉืืืื.
- ืืืกืจื ืืืืืจื (-Wstatic-in-inline) ืืขืช ืฉืืืืฉ ืืคืื ืงืฆืืืช ืกืืืืืช ืื ืืฉืชื ืื ืืชืื ืคืื ืงืฆืืืช ืืืืืืจืืช ื-"extern inline".
- ืืืืืืช ืืืืืืจืืช ืืชืงื C23 C:
- ืงืืืฅ ืืืืชืจืช float.h ืชืืื ืืขืช ืืคืงืืืืช ืืืืงืจื FLT_SNAN, DBL_SNAN ื-LDBL_SNAN, ืืฉืจ ืืืืฉืืื ืขืจืื NaN signaled (ืืืืจืืื ืืืจืืื ืืขืช ืฉืืืืฉ ืืคืขืืืืช ืืจืืชืืืืืช) ืขืืืจ ืกืืื float, double ื-long double.
- ืชืืงื ืืื ืฉืื ืกืืืื ืฉืื ืื ืืื ืฉื ืืืคืื ืืชืืืืื ืืืืชื ืืืืืช ืชืจืืื ืื ืืื ืืื ืืืชื ืฉืืืช.
- ืืืื "-MG" ืืืฉืืฉ ืืืชืขืืืืช ืืงืืฆื ืืืชืจืช ืืกืจืื ืืืืื ืกืจืืงืช ืชืืืืืช ืืืจืื ืืื ืืืืช "#embed" ืืืขืช ืืืื ืืช ืืฉืืืื "ืืงืืืฅ ืื ื ืืฆื" ืืืฉืจ ืงืืืฅ ืฉืฆืืื ืืืืจืืช "#embed" ืืกืจ.
- ืชืืื ืืช ืืงืฉืืจืืช ื-C++:
- ื ืืกืคื ืืืืืืช ืืืฉืชืืฉ ืืงืืฉืืจืื ืืืื ืื ืืืงืฉืจ ืฉื "constexpr", ืืคื ืฉืคืืชื ืืืคืจื C++2c (C++26). ืืฉืืขืืช ืืืืจ ืืื ืฉืืคื ืืืช ืืืืืืืื ืงืืืขืื ืืืืืืช ืืขืช ืืืืืช ืืืืืืื ืงืืืขืื ืืขืฆืื. ืืืืฉืืช ืชืืืื ืขืืืจ ืืขืจืืื ืืืื ืื ืคืฉืืืื (tuples ืขืืืื ืืื ื ื ืชืืืื). constexpr int arr[] = {1, 2}; constexpr auto [x, y] = arr;
- ืืคื ืฉื ืืจืฉ ืืชืงื C++20, ืืืืืฆืื ืืืืจืื ืืขืช ืืฆืืจื ืกืื ืืจืืืช ืืคื ื ืืืืืงื, ืื ืฉืืืคืฉืจ ืืืืขืืช ืืืืื ืืืืืงืืช ืืืชืจ ืืืืคืื ื ืืื ืืฉืืืืืช ืืืืคื ืืืจืืืื ืืื ืฉื ืชืื ืืช ืืืฉืืฉืื ืจืง ืืืืื ืืืฉื.
- ื ืืกืคื ืืฉืคืื ืฉื ืคืื ืงืฆืืืช ืืืื ืืช "__builtin_[lt|gt|le|ge]_synthesizes_from_spaceship" ืืื ืืืจืจ ืืื ืืืคืจืืืจื ืืืฉืืืื "<", ">", "<=" ื-">=" โโืกืื ืชืื ืืืืืคืจืืืจ "<=>".
- ืืคืจืืืจ "-Wincompatible-pointer-types" ืฉืื ื ืื ืฉืืฆืื ืฉืืืื ืืืงืื ืืืืจื. ืืื ืืืืืจ ืืืชื ืืืืช ืืงืืืืช, ืืฉืชืืฉ ืืืคืฉืจืืช "-Wno-error=incompatible-pointer-types".
- ื ืืกืคื ืคืื ืงืฆืืืช ืืืื ืืช __builtin_bswapg, __builtin_elementwise_ldexp, __builtin_elementwise_fshl, __builtin_elementwise_fshr, __builtin_elementwise_minnumnum, __builtin_elementwise_maxnumnum, __builtin_masked_load, __builtin_masked_expand_load, __builtin_masked_store, __builtin_masked_compress_store, __builtin_masked_gather, __builtin_masked_scatter, ื-__builtin_dedup_pack. ืืืืืื, builtin_dedup_pack ืืืคืฉืจ ืื ืืืกืืจ ืืคืืืืืืช ืืจืฉืืืช ืกืืืื: ืืืืฆืขืืช MyTypeList = TypeList<__builtin_dedup_pack ...>; // ืืกืื ืฉืืชืงืื ืืืื TypeList
- ืืขืช ื ืืคืื ืฉืืืืืช ืืืชื ืืืืช ืื ืืืืืจืช ืขื UBSan (-fsanitize=undefined -fsanitize-trap=undefined), ืืืืข ืขื ืกืืืช ืืฉืืืื ื ืืื ืืขืช ืืืืืข ื ืืคืื ืืฉืืืืืช ืฉื ืืฆืจ. ืืืื "-fsanitize-debug-trap-reasons" ื ืืกืฃ ืืื ืืฆืืื ืืช ืจืืช ืืคืืจืื ืืืืืข ืืฉืืืื. ื ืืชื ืืืืืืจ ืืืชื ื-"ืืกืืกื" ืขืืืจ ืชืืืืจืื ืืืืืื (ืืืฉื, "ืืืืฉืช ืืืืืจ ืืกืคืจืื ืฉืืืื") ืื-"ืืคืืจื" ืืื ืืืืื ืืืืข ืืคืืจื (ืืืฉื, "ืืืืฉืช ืืืืืจ ืืกืคืจืื ืฉืืืื ืขื ืืชืืื ื-'a + b'").
- ื ืืกืคื ืืืื ืืืืจ ืืืฉืื:
- `-f[no-]sanitize-debug-trap-reasons` ืืื ืืฉืืื ืืื ืกืืืืช ืืืืืืืืช ืืจืืืื ืืืืืขืืช ืืืืืข ื ืืคืื ืฉืืืืืช ืืขืช ืงืืืคืืืฆืื ืืืฆื `-fsanitize-trap`.
- "-fsanitize=alloc-token", "-falloc-token-max", "-fsanitize-alloc-token-fast-abi", ื-"-fsanitize-alloc-token-extended" ืื ืืืื ืืกืืืื ื ืืงืฆืืช ืืืืจืื.
- "-fmatrix-memory-layout" ืืื ืืฉืืื ืืคืจืืกืช ืืืืืจืื ืฉื ืกืืื ืืืจืืฆืืช (ืืืฉื, column-major ืขืืืจ column-major, row-major ืขืืืจ row-major).
- ืืคืื ืงืฆืืืช ืืฉ ืืขืช ืชืืื ื "malloc_span", ืืืืื ืืชืืื ื malloc ืื ืจืืืื ืืืช ืืคืื ืงืฆืืืช ืฉืืืืืจืืช ืืื ืื ืืืืื span ืืืืืืื ืืฆืืืข ืืฉืื ืขื ืืืืื ืื ืืฆืืืข ืืกืืฃ ืืืืืง.
- ื ืืกืฃ ืืชืืื ื "modular_format" ืืื ืืืืืจ ืืืืคื ืืื ืื ืืช ืืืืืืฉ ืื ืืจืฉ ืฉื ืคืื ืงืฆืืืช printf ืืืงืืฉืจ ืกืืืืช ืืืื ืืงืืฉืืจ.
- ืืื ืืืืื ืื ืืชืื ืกืืื ืืืจืืื, ื ืืกืคื ืืืืงืืช ืืืฉืืช (ืืื ืขืฉืจืืช ืฉืืคืืจืื ืืงืฉืืจืื ืืืืืื).
- ืชืืกืคืืช ืคื ืืืืืช ื ืืกืคืืช ืขืืืจ ืืจืืืืช SSE, AVX ื-AVX512 ื ืืกืคื ืืฉืจืช ืืืืืจื ืฉื X86. ืืฆืื ืื ืืื ื ืืกืคื ืขืืืจ ืืขืืื Intel ืืืืืกืกืื ืขื ืืืืงืจื-ืืจืืืืงืืืจืืช ืฉื Wildcat Lake (-march=wildcatlake) ื-Nova Lake (-march=novalake).
- ืืขืจืืช ืืืคืขืื AArch64 ืชืืืืช ืืขืช ืืืขืืื Ampere Computing Ampere1C (ampere1c), Arm C1-Nano (c1-nano), Arm C1-Pro (c1-pro), Arm C1-Premium (c1-premium) ื-Arm C1-Ultra (c1-ultra). ื ืืกืคื ืคืื ืงืฆืืืช ืืืื ืืช ื ืืกืคืืช ืขืืืจ ืืืจืืืช FCVTZ[US], FCVTN[US], FCVTM[US], FCVTP[US] ื-FCVTA[US]. ืืชืืืื ืื ืืืื ืืจืกืืืช ืืจืืืืช ืคืื ืงืฆืืืช (FMV) ืืชืืืฆืื. ืืฉืชืืฉืื ืืืืืื ืืขืช ืืขืงืืฃ ืืช ืืขืืืคืืช ืฉื ืืจืกืืืช ืคืื ืงืฆืืืช ืฉืื ืืช.
- ื ืืกืคื ืชืืืื ืืืจืืืืงืืืจืช LoongArch32 โ(LA32R, LA32S).
- ืืขืจืืืช ืืืืจืืืช ืืฉืืคืจืืช ืขืืืจ ืืจืืืืงืืืจืืช ARM, AMDGPU, RISC-V, LoongArch64, MIPS, WebAssembly ื-PowerPC.
ืืงืืจ: OpenNet.ru
