ืืืืจ ืฉืืฉื ืืืืฉืื ืฉื ืคืืชืื
ืชืืื ืืช ืืืฉืืช ื-LLVM 10.0 ืืืืืืช ืชืืืื ื-C++ Concepts, ืื ืืจืืฅ ืขืื ืืช Clang ืืชืืืื ื ืคืจื, ืชืืืื ืืืืืงืืช CFG (ืืฉืืจ ืืจืืื ืืงืจื) ืขืืืจ Windows ืืชืืืื ืืืืืืืช CPU ืืืฉืืช.
- ื ืืกืคื ืชืืืื ืขืืืจ "
ืืืฉืืื ", ืกืืืืช ืชืื ืืช C++ ืฉืชืืืื ืืชืงื ืืื, ืืฉื ืืงืื C++2a (ืืืคืขื ืขื ืืื ืืืื -std=c++2a).
ืืืฉืืื ืืืคืฉืจืื ืื ืืืืืืจ ืงืืืฆื ืฉื ืืจืืฉืืช ืคืจืืืจืื ืฉื ืชืื ืืช, ืฉืืืื ืืงืืืคืืืฆืื, ืืืืืืืช ืืช ืงืืืฆืช ืืืจืืืื ืืื ืฉื ืืชื ืืงืื ืืคืจืืืจืื ืฉื ืชืื ืืช. ื ืืชื ืืืฉืชืืฉ ืืืืฉืืื ืืื ืืื ืืข ืืืกืจ ืขืงืืืืช ืืืืืช ืืื ืืืืคืืื ืื ืฉื ืกืืื ืื ืชืื ืื ืืืฉืืฉืื ืืชืื ืืชืื ืืช ืืืื ืืืคืืื ื ืกืื ืื ืชืื ืื ืฉื ืคืจืืืจื ืืงืื.ืชืื ืืช
ืืืฉื EqualityComparable = requires(T a, T b) {
{ a == b } -> std::boolean;
{ a != b } -> std::boolean;
}; - ืืืจืืจืช ืืืื, ืืืฉืงื ืฉื ืชืืืื ื ืคืจื ("clang -cc1") ืื ืืืืฆืขืช ืืืืืจ ื ืขืฆืจืช. ืืงืืืคืืืฆืื ืืชืืฆืขืช ืืขืช ืืชืืืื ืืจืืฉื, ืื ืืชื ืืืฉืชืืฉ ืืืคืฉืจืืช "-fno-integrated-cc1" ืืื ืืฉืืืจ ืืช ืืืชื ืืืืช ืืืฉื ื.
- ืืฆืื ืืืืื ืืืฉืื:
- "-Wc99-designator" ื-"-Wreorder-init-list" ืืืืืจืื ืืคื ื ืฉืืืืฉ ืืืชืืืืื ืฉื C99 ืืืฆื C++ ืืืงืจืื ืฉืืื ืื ื ืืื ืื ื-C99 ืื ืื ื-C++20.
- "-Wsizeof-array-div" - ืชืืคืก ืืฆืืื ืืืื "int arr[10]; ...sizeof(arr) / sizeof(short)..." (ืฆืจืื ืืืืืช "sizeof(arr) / sizeof(int)").
- "-Wxor-used-as-po" - ืืืืืจ ืืคื ื ืฉืืืืฉ ืืืื ืื ืืืื ืฉืืืืฉ ืืืืคืจืืืจ "^" (xor) ืืคืขืืืืช ืฉื ืืชื ืืืืื ืขื ืืงืกืคืื ื ืฆืื (2^16).
- "-Wfinal-dtor-non-final-class" - ืืชืจืืข ืขื ืืืืงืืช ืฉืืื ื ืืกืืื ืืช ืืืคืจื "ืกืืคื", ืื ืืฉ ืืื ืืฉืืื ืขื ืืชืืื ื "ืกืืคื".
- "-Wtautological-bitwise-compare" ืืื ืงืืืฆื ืฉื ืืืืจืืช ืืืืืื ืืฉืืืืืช ืืืืืืืืืืืช ืืื ืคืขืืื ืกืืืืช ืืงืืืข, ืืืืืืื ืืฉืืืืืช ืืืช ืชืืื ืฉืืื ืคืขืืืช OR ืกืืืืช ืืืืืช ืขื ืืกืคืจ ืื ืฉืืืื.
- "-Wbitwise-conditional-parentheses" ืืืืืจ ืืคื ื ืืขืืืช ืืขืช ืขืจืืื ืืืืคืจืืืจืื ืืืืืืื AND (&) ื-OR (|) ืขื ืืืืคืจืืืจ ืืืืชื ื (?:).
- "-Wmisleading-indentation" ืืื ืื ืืืื ืฉื ืืืืื ืืืืชื ืฉื ื-GCC, ืฉืืชืจืืข ืขื ืืืืืืื ืืืืืื ืืืืื ืื ืืืง ืืืืืง if/else/for/while, ืื ืืืขืฉื ืื ืืื ื ืืืืืื ืืืืืง ืื .
- ืืขืช ืฆืืื "-Wextra", ืืกืืืื "-Wdeprecated-copy" ืืืคืขื, ืืืืจื ืืืื ืืฉืืืืฉ ืืื ืืื
"ืืื" ื"ืืขืชืง" ืืฉืืขืืจืื ืขื ืืืืจื ืืคืืจืฉืช ืฉื ืืฉืืื. - ืืืืืงืืช "-Wtautological-ืืคืืคื-ืืฉืืืื", "-Wsizeof-pointer-div", "-Wtautological-compare", "-Wrange-loop-analysis" ืืืจืืื.
- ืืกืืืื "-Wbitwise-op-parentheses" ื-"-Wlogical-op-parentheses" ืืืฉืืชืื ืืืจืืจืช ืืืื.
- ืืงืื C ื-C++, ืคืขืืืืช ืืจืืชืืืืืช ืืฆืืืข ืืืชืจืืช ืจืง ืืืขืจืืื. ื-Undefined Behavior Sanitizer ืืืฆื "-fsanitize=pointer-overflow" ืชืืคืก ืืขืช ืืงืจืื ืืืื ืืืกืคืช ืืืกื ืฉืืื ื ืืคืก ืืืฆืืืข ืืคืก ืื ืืฆืืจืช ืืฆืืืข null ืืขืช ืืคืืชืช ืืกืคืจ ืฉืื ืืืฆืืืข ืฉืืื ื ืืคืก.
- ืืฆื "-fsanitize=implicit-conversion" (ืืืืคืืื ืืืจืืช ืื ืงื) ืืืชืื ืืืืืช ืืขืืืช ืขื ืคืขืืืืช ืืืืื ืืืงืื ื ืขืืืจ ืืืคืืกืื ืขื ืืืื ืกืืืืืช ืงืื ืืื ืฉื ืกืื "int".
- ืืขืช ืืืืจืช ืืจืืืืงืืืจืืช ืืขื ืฉื x86 "-march=skylake-avx512", "-march=icelake-client", "-march=icelake-server", "-march=cascadelake" ื-"-march=cooperlake" ืืืจืืจืช ืืืื ื-Vectorized The ืืงืื ืืคืกืืง ืืืฉืชืืฉ ืืืืืจื zmm ืฉื 512 ืกืืืืืช, ืืืขื ืฆืืื ืืฉืืจ ืฉืืื ืืงืื ืืืงืืจ. ืืกืืื ืืื ืฉืชืืจ ืืืขืื ืืืจื ืืขืช ืืืฆืืข ืคืขืืืืช ืฉื 512 ืกืืืืืช, ืื ืฉืขืืื ืืืฉืคืืข ืืจืขื ืขื ืืืืฆืืขืื ืืืืืืื. ืืื ืืฉื ืืช ืืช ืืืชื ืืืืช ืืืืฉื, ื ืืชื ืช ืืืคืฉืจืืช "-mrefer-vector-width=512".
- ืืืชื ืืืืช ืฉื ืืืื "-flax-vector-conversions" ืืืื ื-GCC: ืืืจืืช ืกืืืืืช ืืงืืืจ ืืจืืืืืช ืืื ืืงืืืจืื ืฉืืืื ืื ืงืืื ืฆืคื ืืกืืจืืช. ืืื ืืืื ืืืืื ืื, ืืืฆืข ืืืฉืชืืฉ ืืืื
"-flax-vector-conversions=all" ืฉืืื ืืจืืจืช ืืืืื. - ืชืืืื ืืฉืืคืจืช ืืืขืืื MIPS ืืืฉืคืืช Octeon. ื ืืกืฃ "octeon+" ืืจืฉืืืช ืกืืื ืืืขืื ืืืืงืืื.
- ืืขืช ืืจืืื ืืงืื ืืื ืืื ืฉื WebAssembly, ืืืืขื wasm-opt ื ืงืจื ืืืืืืืืช, ืื ืืืื ืืืขืจืืช.
- ืขืืืจ ืืขืจืืืช ืืืืืกืกืืช ืขื ืืจืืืืงืืืจืช RISC-V, ืืฉืืืืฉ ืืจืืืกืืจืื ืืืืืกื ืื ืขืจืื ื ืงืืื ืฆืคื ืืืชืจ ืืืืงืื ืืืชื ืื ืฉื ืชืืกืคืืช ืืกืืืืจ ืืืืืขืืช.
- ื ืืกืคื ืืืื ืืืืจ ืืืฉืื: "-fgnuc-version" ืืื ืืืืืืจ ืืช ืขืจื ืืืจืกื ืขืืืจ "__GNUC__" ืืคืงืืืืช ืืืงืจื ืืืืืช; "-fmacro-prefix-map=OLD=NEW" ืืื ืืืืืืฃ ืืช ืงืืืืืช ืืกืคืจืืื OLD ื-NEW ืืคืงืืืืช ืืืงืจื ืืืื "__FILE__"; "-fpatchable-function-entry=N[,M]" ืืืฆืืจืช ืืกืคืจ ืืกืืื ืฉื ืืืจืืืช NOP ืืคื ื ืืืืจื ื ืงืืืช ืืื ืืกื ืืคืื ืงืฆืื. ืขืืืจ RISC-V
ืืืกืืคื ืชืืืื ืืืืืื "-ffixed-xX", "-mcmodel=medany" ื-"-mcmodel=medlow". - ื ืืกืคื ืชืืืื ืืชืืื ื '__attribute__((target("branch-protection=..."))), ืฉืืฉืคืขืชื ืืืื ืืืคืฉืจืืช
-ืขื ืฃ-ืืื ื . - ืืคืืืคืืจืืช Windows, ืืขืช ืฆืืื ืืืื "-cfguard", ืืืืฉืืช ืืืืคื ืฉื ืืืืงืืช ืชืงืื ืืช ืืจืืืช ืืืืฆืืข (Control Flow Guard) ืขืืืจ ืงืจืืืืช ืคืื ืงืฆืื ืขืงืืคืืช. ืืื ืืืื ืืช ืืืืคืช ืืืืืืช, ืืชื ืืืื ืืืฉืชืืฉ ืืืื "-cfguard-nochecks" ืื ืืืฉื ื "__declspec(guard(nocf))".
- ืืืชื ืืืืช ืฉื ืืชืืื ื gnu_inline ืืืื ื-GCC ืืืงืจืื ืฉืืื ื ืขืฉื ืื ืฉืืืืฉ ืืื ืืืืช ืืืคืชื "ืืืฆืื ืืช".
- ืืืืืืืช ืืงืฉืืจืืช ืืชืืืื ื-OpenCL ืื-CUDA ืืืจืืื. ื ืืกืคื ืชืืืื ืืชืืื ืืช ืืืฉืืช ืฉื OpenMP 5.0.
- ื ืืกืคื ืืคืฉืจืืช Standard ืืชืืื ืืช ืืฉืืจืืช clang-format, ืืืืคืฉืจืช ืืงืืืข ืืช ืืืจืกื ืฉื ืชืงื C++ ืืืฉืืฉ ืืขืช ื ืืชืื ืืขืืฆืื ืงืื (Latest, Auto, c++03, c++11, c++14, c++17, c++20 ).
- ืืืืงืืช ืืืฉืืช ื ืืกืคื ืื ืชื ืืกืืื: alpha.cplusplus.PlacementNew ืืื ืืงืืืข ืื ืืฉ ืืกืคืืง ืฉืื ืืืกืื, fuchsia.HandleChecker ืืืืชืืจ ืืืืคืืช ืืงืฉืืจืืช ืืืืคืื ืคืืงืกืื, security.insecureAPI.decodeValueOfObjCType ืืื ืืืืืช ืืฆืคืช ืืืืจ ืคืืื ืฆืืืืืช ืืขืช ืฉืืืืฉ ื-[NSCoder decodeValueOfObjCTypeOf :at:] .
- ื-Undefined Behavior Sanitizer (UBSan) ืืจืืื ืืช ืืืืงืืช ืืฆืคืช ืืืฆืืืขืื ืฉืื ืืื ืืชืคืืก ืืช ืืืืฉืื ืฉื ืงืืืืืื ืฉืืื ื ืืคืก ืขื ืืฆืืืขื NULL ืื ืืชืืกืคืช ืืชืืฆืื ืืื ืฉื ืืืกื ืืฆืืืข NULL.
- ืืืืืจ ืฆืืฆื ืืกืืืจ
ืืืกืืฃ ืืืง ืืืื ืฉื ืฆ'ืงืื ืืืฉืื.
ืืขืืงืจื
- ืืืกืืจืช
ืืืืืก ื ืืกืคื ืืืคืืืืืืฆืืืช ืืื ืชืืื ืืื-ืืืืืื ืืืฉืื. ืืฆืื ืฉื 19 ืชืืื ืืช ืฉืื ืืช ืฆืคืื, ืืืื 12 ืชืืื ืืช 12 LLVM IR ื-7 ืชืืื ืืช ืืืคืฉืืืช ืืืื ืืืื ืืืช. - ื ืืกืคื ืคืื ืงืฆืืืช ืืชืืืืืช ืืืจืืฆืืช ืืืฉืืช ืืืืื ืืช ืืืืืจ (
ืคื ืืืืืช ), ืืืืืืคืืช ืืืืจืืืช ืืงืืืจืืืช ืืขืืืืช ืืืืื ืืืืืืจ. - ืฉืืคืืจืื ืจืืื ืืืฆืขื ืืงืฆื ืืืืืจื ืขืืืจ ืืจืืืืงืืืจืืช X86, AArch64, ARM, SystemZ, MIPS, AMDGPU ื- PowerPC. ื ืืกืคื ืชืืืื ืืืขืื
Cortex-A65, Cortex-A65AE, Neoverse E1 ื-Neoverse N1. ืขืืืจ ARMv8.1-M, โโืชืืืื ืืฆืืจืช ืืงืื ืขืืจ ืืืคืืืืืืฆืื (ืืืืืื, ืืืคืืขื ืชืืืื ืืืืืืืช ืขื ืชืงืืจื ืืื ืืืืืช) ืื ืืกืคื ืชืืืื ื-autovectorization ืืืืฆืขืืช ืกืืืืช MVE. ืชืืืืช CPU MIPS Octeon ืืฉืืคืจืช. ืขืืืจ PowerPC, ืืงืืืจืืืฆืื ืฉื ืชืชื ืฉืืจืืช ืืชืืืืืช ืืืืฆืขืืช ืกืคืจืืืช MASSV (Mathematical Acceleration SubSystem) ืืืคืขืืช, ืืฆืืจืช ืืงืื ืืฉืืคืจืช, ืืืืืฉื ืืืืืจืื ืืืืืืืช ืขืืืจืช ืืืคืืืืืืฆืื. ืขืืืจ x86, ืืฉืชื ื ืืืืคืื ืืกืืื ืืืืงืืืจ v2i32, v4i16, v2i16, v8i8, v4i8 ื-v2i8. - ืืืืื ืงืื ืืฉืืคืจ ืขืืืจ WebAssembly. ื ืืกืคื ืชืืืื ืขืืืจ TLS (ืืืกืื ืืงืืื) ืืืืจืืืช atomic.fence. ืชืืืืช SIMD ืืืจืืื ืืฉืืขืืชืืช. ืืงืืฆื ืืืืืืงื WebAssembly ืืฉ ืืขืช ืืช ืืืืืืช ืืืฉืชืืฉ ืืืชืืืืช ืคืื ืงืฆืืืช ืืจืืืืช ืขืจืืื.
- ืื ืชื ืืฉืืฉ ืืขืช ืขืืืื ืืืืืืช
MemorySSA , ืืืืคืฉืจ ืื ืืืืืืจ ืชืืืช ืืื ืคืขืืืืช ืืืืจืื ืฉืื ืืช. MemorySSA ืืืื ืืืคืืืช ืืช ืืื ืืืืืืจ ืืืืืฆืืข ืื ืฉื ืืชื ืืืฉืชืืฉ ืื ืืืงืื AliasSetTracker ืืื ืืืืื ืืืฆืืขืื. - ืืืชืจ ืืืืืื LLDB ืฉืืคืจ ืืฉืืขืืชืืช ืืช ืืชืืืื ืืคืืจืื DWARF v5. ืชืืืื ืืฉืืคืจืช ืืื ืืื ืขื MinGW
ืืืืกืคื ืืืืืช ืจืืฉืื ืืช ืื ืืคืื ืืืืื ืืงืืืฆื ืืคืขืื ืฉื Windows ืขืืืจ ืืจืืืืงืืืจืืช ARM ื-ARM64. ื ืืกืคื ืชืืืืจืื ืฉื ืืืคืฉืจืืืืช ืืืืฆืขืืช ืืขืช ืืฉืืื ืืืืืืืืช ืฉื ืงืื ืขื ืืื ืืืืฆื ืขื Tab. -
ืืึผืจืึธื ืืืืืืช ืงืืฉืืจ LLD. ืชืืืื ืืฉืืคืจืช ืืคืืจืื ELF, ืืืื ืืืืืช ืชืืืืืช ืืืื ืฉื ืชืื ืืืช ืืืื ืขื ืืงืฉืจ GNU, ืืืกืคืช ืชืืืื ืืืงืืขื ื ืืคืื ืืืืื ืืืืกืื ".zdebug", ืืืกืคืช ืืืืคืืื PT_GNU_PROPERTY ืืื ืืืืืืจ ืืช ืืงืืข .note.gnu.property (ื ืืชื ืืืฉืชืืฉ ืื ืืขืชืื ืืืืืช ืืื ืืงืก),
ืืืืืขื ืืืฆืืื "-z noseparate-code", "-z separate-code" ื-"-z separate-separate-segments". ืชืืืื ืืฉืืคืจืช ืขืืืจ MinGW ื-WebAssembly.
ืืงืืจ: OpenNet.ru