αααααΆααααΈααααΆααα½αααααααΆαα’αα·αααααα
αααααααα·αααααααΈαα αααα»α LLVM 10.0 αα½αααΆαααΆαααΆαααααααααΆαα C++ Concepts αααααααΎαααΆα Clang ααΆααααΎαααΆαααΆα ααααα‘αα ααΆαααΆαααααααααΆααααΆααααα½ααα·αα·ααα CFG (control flow guard) αααααΆαα Windows αα·αααΆαααΆαααααααααΆαααααααααΆα CPU ααααΈα
- ααΆαααααααααΆαααΆαααααααααΆαα "
αααα·α ", αααααααααααααααΌ C++ αααααΉαααααΌαααΆααα½ααααα αΌααα αααα»ααααααααΆααααααΆαα αααααΆααααααααΆ C++2a (ααΎααααααα -std=c++2a) α
αααα·αα’αα»ααααΆαα±ααα’αααααααααααα»ααααααααΌαααΆααααΆαααΆααααααααααΌααααα αααα αααααααααααααα»αααα’αΆαα»ααααααααα’αΆα ααα½αααααΆαααΆαααΆαααΆααααααααααΌα ααααααα·αα’αΆα ααααΌαααΆαααααΎααΎααααΈαααααΆαααΆααα·ααααΈααααΆααα‘αΌααΈαααααΆααααααααααααααα·αααααααααα·αααααααααααΆαααααΎαα αααα»αααααΌ αα·ααααααααααααααα·αααααααα·αααααααααααΆαααΆαααααααααα αΌααααααΌ
αααα·αααααΆααααααααα = ααΆαααΆα(T a, T b) {
{ a == b } -> std::boolean;
{ a != b } -> std::boolean;
}; - ααΆαααααΆαααΎα ααΆαα αΆααααααΎαααααΎαααΆαααΆα ααααα‘αα (βclang -cc1β) αααααΆαα αααααααααΌαααΆαα’αα»ααααααααΌαααΆαααααααα α₯α‘αΌααααααΆαα αααααααααΌαααΆαααααΎαα½α αα αααα»αααααΎαααΆαα αααα α αΎααααααΎα "-fno-integrated-cc1" α’αΆα ααααΌαααΆαααααΎααΎααααΈααααΆαα₯αα·ααΆααα αΆααα
- ααααααααΎααααα·αα·α
ααααααααΈα
- "-Wc99-designator" αα·α "-Wreorder-init-list" αααααΆααααααΆααααΉαααΆαααααΎααααΆαα C99 initializers αα αααα»ααααα 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" ααΊααΆαααα»αααααΆααααααΆααααααΆααααΆαααααΎααααα·αα·α ααααααΆααααααααα tautological αααΆαααααα·ααααα·ααΆα bitwise αα·αααααα½α αα·ααααααΆαααααααα’ααααααααΆαααΆααααααααααααααααααα·α αααααααα·ααααα·ααΆα bitwise OR ααααΌαααΆαα’αα»αααααα αααααααα·αα’αα·αααααΆαα
- "-Wbitwise-conditional-parentheses" αααααΆαα’αααΈαααα αΆαα αααααΆααααααΆαααααΆααα·ααΈα‘αΌααΈαα AND (&) αα·α OR (|) ααΆαα½αααααα·ααααα·ααααΆααααααααα (?:) α
- "-Wmisleading-indentation" ααΊααΆ analogue ααααΆααααα½ααα·αα·ααααααααααααΌα ααααΆααΈ GCC ααααααααΆαα’αααΈαααααααααααΆαα αΌααααααΆααααΌα ααΆααααα·αααΎαα½αααααΆααααααα½ααααααα»α if/else/for/while ααα»ααααααΆααα·ααα½αααΆαα·αααααΌαααΆααα½ααααα αΌααα αααα»ααααα»ααααααα .
- αα
ααααααααΆαα β-Wextraβ ααΆααααα½ααα·αα·ααα β-Wdeprecated-copyβ ααααΌαααΆαααΎα ααααααααΆαα’αααΈααΆαααααΎααααΆαα constructors
"ααααΆααααΈ" αα·α "α αααα" αα αααα»αααααΆαααααααΆααα·αααααα’αααααααααΆαα αααΆααααΆααα - ααΆααααα½ααα·αα·ααα "-Wtautological-overlap-compare", "-Wsizeof-pointer-div", "-Wtautological-compare", "-Wrange-loop-analysis" ααααΌαααΆααααααΈαα
- ααΆααααα½ααα·αα·ααα "-Wbitwise-op-parentheses" αα·α "-Wlogical-op-parentheses" ααααΌαααΆααα·αααΆαααααΆαααΎαα
- αα αααα»αααΌα C αα·α C++ ααααα·ααααα·ααΆααααααααααααα·α ααααΌαααΆαα’αα»ααααΆααααααα»αα’αΆααααα»αααααα α§αααααα’ααΆαααααααα·αααΆαααααααα αααα»ααααα "-fsanitize=pointer-overflow" α₯α‘αΌααααα αΆααααααΈααΌα ααΆααΆαααααααα’α»α αααα·ααα·αααΌααααα ααααα·α ααα α¬αααααΎαααααα·α ααα αα αααααα ααα½ααααααΈααααα·α ααααα·ααααααΆααααα
- αααα "-fsanitize=implicit-conversion" (Implicit Conversion Sanitizer) ααααΌαααΆαααααααα½αααΎααααΈααααααααα αΆααΆαα½αααΉαααααα·ααααα·ααΆααααααΎα αα·αααααααααααΆαααααααααααααΆαααα ααααΈαααΌα ααΆααααααα "int"α
- αα αααααααΎαααΎαααααΆααααααααααααα x86 "-march=skylake-avx512", "-march=icelake-client", "-march=icelake-server", "-march=cascadelake" αα·α "-march=cooperlake" ααΆαααααΆαααΎααααα»αααα·α αααα ααΌαααΆααααααααΎααΆαα α»αααααα zmm 512 αααΈα ααΎααααααααΆαα ααα’α»ααααα αΆαααααΆαααααααα½ααααα αααα»αααΌααααααα α ααα»ααααΊααΆααααααααααΈααΈααΌααα α»ααα αααα’αα»ααααααααα·ααααα·ααΆα 512 αααΈα αααα’αΆα αααααΆααα’αα·αααααΆααααααααΎαααΆαααΆααααΌαα ααΎααααΈααααΆααααααΌαα₯αα·ααΆααααααΈ αααααΎα "-mprefer-vector-width=512" ααααΌαααΆααααααααΌαα
- α₯αα·ααΆααααααα "-flax-vector-conversions" ααΊαααααααα
ααΉα GCCα ααΆααααααααααα·α
αααααααααααααααΆαα
ααα½αααα αα·αααα·α
αααα’αααααααΉαααααΌαααΆαα αΆαααΆααα ααΎααααΈαα»αααααΆαααααααααααααααΆααααΌαααΆαααααΎα±ααααααΎαααααΆαα·
"-flax-vector-conversions=all" αααααΆααααΆαααΎαα - ααΆαααΆαααααααααΎαα‘αΎααααααΆαααααΈααΈααΌ MIPS αααααα½ααΆα Octeon α ααΆααααααα "octeon+" αα αααα»ααααααΈαααααααα CPU ααααΉαααααΌαα
- αα ααααααα αΌααα αααα»αααΌαααααα·αααααααααα 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__((ααααα
("ααΆαααΆαααΆαααΆααΆ=..."))) α₯αααα·ααααααααααααα
ααΉααααααΎα
- ααΆααΆ - ααΆαααΆαααΆα . - αα ααΎαααα·ααΆααΈαααΌ αα ααααααααΆααααα "-cfguard" ααΆααααα½αααΆααααα½ααα·αα·αααααΆαααααΉαααααΌαααααα αΌαααααα·ααααα· (Control Flow Guard) αααααΆααααΆαα α αα»αααΆααααααααααααααΌαααΆαα’αα»ααααα ααΎααααΈαα·αααΆααααα½αααΆααααα½ααα·αα·ααα α’αααα’αΆα ααααΎααα "-cfguard-nochecks" α¬ "__declspec(guard(nocf))" ααααααα
- α₯αα·ααΆαααααα»ααααααα gnu_inline ααΊαααααααα ααΉα GCC αααα»αααααΈαααααΆααααΌαααΆαααααΎαααααααΆαααΆααααααααΉα "extern" α
- αααααααΆααααααααΆααααΆαα½αααΆαααΆαααα OpenCL αα·α CUDA ααααΌαααΆααααααΈαα ααΆαααααααααΆαααΆαααααααααΆαααααααααα·ααα OpenMP 5.0 ααααΈα
- αααααΎααααααααΆααα½αααααΌαααΆααααααααα α§αααααααααΎααααΆαααααααα clang αααα’αα»ααααΆαα±ααα’αααααααααααααααααααααΆα C++ αααααααΎαα αααααα αα·αααααΎαααααααααΆαααΌα (α α»αααααααααα»α, ααααααααααααα·, c ++03, c ++ 11, c ++ 14, α ++ α‘α§, α ++ α’α ) α
- ααΆααααα½ααα·αα·αααααααΈααααΌαααΆααααααααα α§ααααααα·ααΆααα·αα·ααααα alpha.cplusplus.PlacementNew ααΎααααΈαααααααΆααΎααΆαααα ααααα»ααααααααααΆααα¬α’αα, fuchsia.HandleChecker ααΎααααΈααααΎαααΆαααα ααααΆααααααΆααααααΉαα§ααααααααααααΆα Fuchsia, security.insecureAPI.decodeValueOfObjCType ααΎααααΈααααΎαααΆαα ααααααααααααΆααααααΆαα»αααα αααααααΎ [NSCoderbovoOVV : αα :] α
- Undefined Behavior Sanitizer (UBSan) ααΆααααααΈαααΆααααα½ααα·αα·αααααΎαα ααα»αααααααααα·α ααααααΆ ααΎααααΈα αΆαααααααααα·ααΈααα’α»α αααα·αααααα·ααααααΆααΌααααα ααααα·α NULL α¬ααΆαααααααααααααααα’α»α αααα·αααααα·α NULL α
- αα
αααα»α linter clang-tidy
αααααα αααααααααααΆααααα½ααα·αα·αααααααΈα
ααααΆαα
- αα
ααααααααα
ααααΆα ααΆααααααΎαααααα·αααααΆα αα·αα§ααααααα·ααΆαα’ααααααααΎαααΆαααααΈααααΌαααΆαααααααα ααααΆαααΆααααα»ααααααα 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 (Thread-Local Storage) αα·αααΆαααααΆαα’αααΈ atomic.fenceα ααΆαααΆαααα SIMD ααααΌαααΆααααααΈααααΆαααααΆααα α―αααΆαααααα» WebAssembly α₯α‘αΌααααααΆαααααααΆαααααΎααααΆααα αααααααΆαα»αααΆααααααΆααααααα αααΎαα
- α§ααααααα·ααΆαααααΌαααΆαααααΎαα
αααααααΎαααΆαααααα·ααα»α
MemorySSA αααα’αα»ααααΆαα±ααα’ααααααααααΆαα’αΆααααααααΆαααααα·ααααα·ααΆαα’αααα αα αΆαααααααααααΆα MemorySSA α’αΆα ααΆαααααααααΆαα ααααα αα·ααααααααΆααααα·ααααα· α¬α’αΆα ααααΎαααα½α AliasSetTracker ααααα·αααΆαααααααααΎαααΆαα - αααααα·ααΈααααΆααααα α»α LLDB ααΆαααααΎα±αααααααΎαα‘αΎααααΆαααααΆααααΌαααΆαααΆαααααααααΆαααααααα DWARF v5 α ααΆαααΆαααααααααΎαα‘αΎααααααΆααααΆααααΆαααΆαα½α MinGW
αα·ααααααααααααααΆαααααΌααααα»αααΆαααααΆααααα α»α Windows αααα’αΆα ααααα·ααααα·ααΆααααααΆααααααΆαααααααα ARM αα·α ARM64 α ααΆαααααααααΆααααααΆα’αααΈαααααΎαααααααααα²αα αα ααααααααααΆααααα αΌααααααααααααααααα·αααα α»α ααααΆααα -
ααΆααααααΈα αααααααΆαααααΆαα LLD α ααΆααααααα’ααΆαααΆαααααααααΆαααααααα ELF αα½αααΆααααΆαααααααΆααααααααααααΌ glob ααΆαα½αα§αααααααααΆαα GNU ααΆαααααααααΆαααΆαααααααααΆαααααααααααΆααααα α»ααααααΆααααα αΆαα ".zdebug" ααΆααααααααααααααααααααα· PT_GNU_PROPERTY ααΎααααΈαααααααααα .note.gnu.property (α’αΆα ααααΎαααα»αααΈαα»α ααΆαααα’ααΆαα ααΊααα),
αααα "-z noseparate-code", "-z ααΆα ααααα‘αα-ααΌα" αα·α "-z ααΆα ααααα‘αα-αααα»α-ααααα" ααααΌαααΆαα’αα»ααααα ααααΎα±αααααααΎαα‘αΎαααΌαααΆαααΆαααααααααΆαα MinGW αα·α WebAssembly α
ααααα: opennet.ru