ื ืื ืืขืงืก ืืืฉืื ืคืื ืื ืืืืืงืืื ื, ืืื LLVM 22.1.0 ืืจืืืกืืขืืขืื ืืขืืืืจื. ืขืก ืื ืืืืืงืื ืืขืฆืืื (ืงืืืคืืืืขืจ, ืืคืืืืืืืจืขืจ, ืืื ืงืืื ืืืฉืขื ืขืจืืืืจื) ืืืืก ืงืืืคืืืื ืคืจืืืจืืืขื ืืื ืืื ืืขืจืืขืืืื ืืืืงืืื ืคืื RISC-ืขื ืืขืืข ืืืืจืืืขืืข ืืื ืกืืจืืงืฆืืขืก (ื ื ืืืจืื-ืืขืืืขื ืืืืจืืืขืืข ืืืฉืื ืืื ื ืืืืื-ืืขืืืขื ืืคืืืืืืืฆืืข ืกืืกืืขื). ืืขืจ ืืขื ืขืจืืจืืขืจ ืคืกืขืืืืืงืืื ืงืขื ืืืขืจื ืคืืจืืืื ืืื ืืื ืืืฉืื ืงืืื ืคืืจ ื ืืขืืขืืขื ืข ืฆืื ืคืืืืคืืจืืข ืืืขืจ ืืขื ืืฆื ืืืจื ื ืืืฉืืกื-ืืื-ืืืื (JIT) ืงืืืคืืืืขืจ ืฆื ืืืฉืขื ืขืจืืจื ืืืฉืื ืืื ืกืืจืืงืฆืืขืก ืืืืื ืืขืช ืคืจืืืจืื ืืืืกืคืืจืื ื. ืืืืืจื ืืืืฃ LLVM ืืขืื ืืืืืืขืก, ืื ืืืืืงืื ืืขืจ ืคืจืืืขืงื ืืขื ืงืืื ื ืงืืืคืืืืขืจ, ืืืืก ืฉืืืฆื ืื C, C++, ืืื ืืืืขืงืืืื-C ืคืจืืืจืืืืจื ืฉืคืจืืื. ืื ืคืื ืืขื ืืื ืืืื 18.x ืฆืืืืื, ืืื ืืขืจ ืคืจืืืขืงื ืืขืืืืฉื ืฆื ื ื ืืืข ืืืขืจืกืืข ื ืืืขืจืืจืื ื ืกืืขืืข, ืืืื ืืืขืืืขืจ ืืจืืืกืืขืืื ื 0 ("N.0") ืืืขืจื ืืขื ืืฆื ืืขืช ืื ืืืืืงืืื ื, ืืื ืื ืขืจืฉืืข ืกืืืืขืืข ืืืขืจืกืืข ืืื ื ืืืขืจืืจื "N.1."
ืืืคึผืจืืืืืึทื ืฅ ืืื Clang 22 ืึทืจืืึทื ื ืขืืขื:
- ืฆืืืขืืขืื ืฉืืืฆืข ืคืืจ ืืึผืจืื ืึทืืึธืงืึทืฆืืข ืืึธืงืขื ืก (ืึทืืึธืงืึทืฆืืข ืืึธืงืขื ืก) ืคืืจื ืืึทืจืงืืจื ืืึผืจืื ืึทืืึธืงืึทืฆืืข ืึธืคึผืขืจืึทืฆืืขืก ืืืจืืืขืคืืจื ืืื ืคืื ืงืฆืืขืก ืืื ืืึทืืึธืง ืืื ืึท ืืื ืฆืืงื ืืืืขื ืืืคืืฆืืจืขืจ. ืึทืืึธืงืึทืฆืืข ืืึธืงืขื ืก ืขืจืืขืืืขืื ืกืืจืืงืืืจืืจื ืืืคึผ ืืื ืคึฟืึธืจืืึทืฆืืข, ืคืึทืจืคึผืฉืืืขืจื ืืึผืจืื ืืืง ืืขืืขืงืฆืืข, ืืื ืขืจืืขืืืขืื ืืจืืคึผืืจื ืคืื ืึธืืืขืงืื ืืึทืืืจื ืืืืฃ ืืืืขืจ ืฆืืืขืง ืึธืืขืจ ืืึธืืืคืืงืึทืฆืืข ืคึผืึทืืขืจื ื (ืืืฉื, ืฆืขืฉืืืื "ืืืืก" ืคืื "ืงืึทืื" ืืึทืื). ืฆื ืขืจืืขืืืขืื, ื ืืฆื ืืขื "-fsanitize=alloc-token" ืคืึธื.
- ืืืืื ืฉืืคืื ืคืืจืืื ืื ืืื ืืขืจ C ืฉืคืจืื:
- ื ืกืงืืฆืข ืคืื โโื ืคืจืืืจืื ืืืืก ืืขืคืื ืืจื ืืขื "ืืขืคืขืจ" ืืขืคืขืจื ืขืงืกืขืงืืฆืืข ืืขืืื ืืื ืืื ืืืืคืืขืืขื ืืืจื ืืขืืืืจื, ืืืืก ืขืจืืืืื ืืืืกืฆืืคืืจื ืืงืฆืืขืก ืืืขื ืืขืจ ืืขืฆืืืืขืจ ืคืืจื ืขื ืขื ืืืื ืืื. ืื "-fdefer-ts" ืคืื ืืื ืฆืืืขืืขืื ืืขืืืืจื ืฆื ืืขืื ืืขืืืขืืงืืื ืคืืจ "ืืขืคืขืจ" ืฉืืืฆืข.
- ืื ืืืื ืืขืืืืืข ืคืื ืงืฆืืข __builtin_stack_address() ืืื ืฆืืืขืืขืื ืืขืืืึธืจื, ืฉืคึผืืืื ืืื ืื ืขื ืืขืืข ืคืื ืงืฆืืข ืืื GCC. ืื ืคืื ืงืฆืืข ืืื ืฆืืจืืง ืืขื ืกืืขืง ืึทืืจืขืก ืืืึธืก ืืืืื ืึธืคึผ ืืขื ืกืืขืง ืืขืื ื ืคืื ืืขืจ ืืืฆืืืงืขืจ ืคืื ืงืฆืืข ืืืึธืก ืืึธื ืืขืจืืคื __builtin_stack_address() ืืื ืื ื ืึธืืคืึธืืื ืืืงืข ืคืื ืงืฆืืขืก ืืืึธืก ืื ืจืืคื ืึธื.
- ืืขืืืขืืงืืืื ืืืึธืก ืืืขืจื ืึทื ืืืืืงืื ืคึฟืึทืจ ืืขื ืฆืืงืื ืคึฟืืืงื C2y ืกืืึทื ืืึทืจื:
- ืฆืืืขืืขืื ืฉืืืฆืข ืคืืจ ืืื ืืืืข ืฉืืืืคื, ืืืืก ืขืจืืืืื ืืืื ืฆื ืืืฉืืืืขื ื ืขืืขื ืฆื ืฉืืืืคื ืืื ืกืืืืืฉ ืกืืขืืืืขื ืืก, ืืืืก ืงืขื ืขื ืกืคืขืฆืืคืืฆืืจื ืืืขืจื ืืื 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 ืืืขืจืื ืคึฟืึทืจ float, double, ืืื long double ืืืคึผื.
- ืืขืคืืงืกื ืึท ืืึทื ืืืื ืคึฟืึทืจืฉืืืขื ืข ืืืืืึทื ืึทื ืืข ืืืคึผื ืืขื ืขื ืืึทืืึทื ืืื ืืขืืืึธืจื ืืื ืงืึธืืคึผืึทืืืื ืืื ืืขืจ ืืขืืืขืจ ืืืืขืจืืขืฆืื ื ืึทืคึผืึทืจืึทื ืืืื ืืื ืืึธืื ืืขืืึทื ืื ืืขืืืข ืคึฟืขืืืขืจ.
- ืื "-MG" ืคืึธื ืืขื ืืฆื ืฆื ืืืื ืึธืจืืจื ืคืขืื ืืืงืข ืืขืืขืจ ืืขืงืขืก ืืขืช ืืขืคึผืขื ืืขื ืกื ืกืงืึทื ืื ื ืืื ืืขืืืึธืจื ืืืืกืืขืืจืืืืขืจื ืฆื "#embed" ืืืจืขืงืืืืื ืืื ืืืฆื ืืื ืืขืจืืจืืงื ืื "ืืขืงืข ื ืืฉื ืืขืคึฟืื ืขื" ืืขืืช ืืืขื ืึท ืืขืงืข ืกืคึผืขืกืืคึฟืืฆืืจื ืืื ืึท "#embed" ืืืจืขืงืืืื ืืื ืคืขืื ืืืง.
- C++ ืคึฟืึทืจืืื ืืขื ืข ืคึฟืขืึดืงืืืื:
- ืื ืืขืืืขืืงืืื ืฆื ื ืืฆื ืกืืจืืงืืืจืืจืืข ืืื ืืื ืืขื ืืื ืืขื "constexpr" ืงืื ืืขืงืกื, ืืื ืื ืืืืืงืื ืืื ืืขืจ C++2c (C++26) ืกืคืขืฆืืคืืงืืฆืืข, ืืื ืฆืืืขืืขืื ืืขืืืืจื. ืืืก ืืืื ื ืื ืจืขืคืขืจืขื ืฆื ืฆื ืงืื ืกืืื ืืข ืืืืกืืจืืงื ืงืขื ืขื ืืขืฆื ืืืืื ืืืื ืงืื ืกืืื ืืข ืืืืกืืจืืงื. ืฉืืืฆืข ืืื ืืืืคืืขืืขื ืืืจื ืคืืจ ืขืจืืื ืืื ืคืฉืืืข ืกืืจืืงืืืจื (ืืืคืืก ืืืขืจื ื ืื ื ืืฉื ืืขืฉืืืฆื). 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 ...>; // ืืขืจ ืจืขืืืืืึทื ืืืคึผ ืืืขื ืืืื ืืืคึผืืืกื
- ืืืขื ืืขื ืืืืึทืื ืืืืืขืคืื ืืจื ื ืึทืืืจ ืืื 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" ืฆื ืงืื ืืจืืืืจื ืื ืืืจืื ืืืืกืืืื ืคืื ืืืืจืืฅ ืืืคื (ืืืฉื, ืงืืืื-ืืืืคื ืคืืจ ืงืืืื-ืืืืคื, ืจืืืข-ืืืืคื ืคืืจ ืจืืืข-ืืืืคื).
- ืคืื ืงืฆืืขืก ืืืื ืืืฆื ื "malloc_span" ืืืจืืืืื, ืขื ืืขื ืฆืื malloc ืืืจืืืืื ืืืขืจ ื ืืฆืืืจ ืคืืจ ืคืื ืงืฆืืขืก ืืืืก ืืขืื ืฆืืจืืง span-ืขื ืืขืืข ืกืืจืืงืืืจื ืืื ื ืฆืืืืขืจ ืืื ื ืคืขืื ืืื ืืขืจ ืืจืืืก ืืืขืจ ื ืฆืืืืขืจ ืฆืื ืกืืฃ ืคืื ืขื ืืืืง.
- ืฆืืืขืืขืื ืืขื "modular_format" ืึทืืจืืืืื ืฆื ืืื ืึทืืืฉ ืืืืกืงืืฒึทืื ืื ืคืืจืืื ืืืข ืกืืึทืืืฉ ืคึฟืึทืจืืื ืืขื ืข ืืืืคึผืืขืืขื ืืึทืฆืืข ืคึฟืื ืืขืจ printf ืคืื ืงืฆืืข ืืฒึทื ืคึฟืึทืจืืื ืื.
- ืืืึทืื ืึธืกืืืฉืข ืืื ืกืืึทืืืฉืข ืึทื ืึทืืื ืืืฉืืจืื ืืขื ืขื ืืืืกืืขืืจืืืืขืจื ืืขืืืึธืจื, ื ืฒึทืข ืงืึธื ืืจืึธืื ืืขื ืขื ืฆืืืขืืขืื ืืขืืืึธืจื (ืขืืืขืืข ืืืฅ ืืืึทืื ืึธืกืืืฉืข ืคึฟืึทืจืืื ืืขื ืข ืคึฟืึทืจืืขืกืขืจืื ืืขื).
- ื ืึธื ืืื ืืจืื ืกืืงืก ืคึฟืึทืจ ืื SSE, AVX, ืืื AVX512 ืขืงืกืืขื ืฉืึทื ื ืืขื ืขื ืฆืืืขืืขืื ืืขืืืึธืจื ืฆื ืื X86 ืืึทืงืขื ื. ืืืืขื ืืึธืืขืก ืืขื ืขื ืฆืืืขืืขืื ืืขืืืึธืจื ืคึฟืึทืจ Intel CPUs ืืึทืืืจื ืืืืฃ ืื 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
