ืฉื—ืจื•ืจ ื—ื‘ื™ืœืช ื”ืžื”ื“ืจ GCC 11

ืœืื—ืจ ืฉื ื” ืฉืœ ืคื™ืชื•ื—, ืฉื•ื—ืจืจื” ื”ืฉื—ืจื•ืจ ืฉืœ ื—ื‘ื™ืœืช ื”ืžื”ื“ืจื™ื ื”ื—ื™ื ืžื™ืช ืฉืœ GCC 11.1, ื”ืžื”ื“ื•ืจื” ื”ืžืฉืžืขื•ืชื™ืช ื”ืจืืฉื•ื ื” ื‘ืขื ืฃ ื”ื—ื“ืฉ ืฉืœ GCC 11.x. ืชื—ืช ืกื›ื™ืžืช ืžืกืคื•ืจ ื”ืžื”ื“ื•ืจื” ื”ื—ื“ืฉื”, ื ืขืฉื” ืฉื™ืžื•ืฉ ื‘ื’ืจืกื” 11.0 ื‘ืžื”ืœืš ื”ืคื™ืชื•ื—, ื•ื–ืžืŸ ืงืฆืจ ืœืคื ื™ ื™ืฆื™ืืชื• ืฉืœ GCC 11.1, ื”ืกื ื™ืฃ ืฉืœ GCC 12.0 ื›ื‘ืจ ื”ื™ื” ืžืชืคืฆืœ, ืžืžื ื• ืชื™ื•ื•ืฆืจ ื”ืžื”ื“ื•ืจื” ื”ืžืฉืžืขื•ืชื™ืช ื”ื‘ืื” ืฉืœ GCC 12.1.

GCC 11.1 ื‘ื•ืœื˜ ื‘ืžืขื‘ืจ ืœืฉื™ืžื•ืฉ ื‘ืคื•ืจืžื˜ ืงื•ื‘ืฅ ื ื™ืคื•ื™ ื‘ืื’ื™ื DWARF 5 ื›ื‘ืจื™ืจืช ืžื—ื“ืœ, ื”ื›ืœืœืช ื‘ืจื™ืจืช ื”ืžื—ื“ืœ ืฉืœ ืชืงืŸ C++17 ("-std=gnu++17"), ืฉื™ืคื•ืจื™ื ืžืฉืžืขื•ืชื™ื™ื ื‘ืชืžื™ื›ื” ื‘-C++20 ืชืงืŸ, ืชืžื™ื›ื” ื ื™ืกื™ื•ื ื™ืช ืขื‘ื•ืจ C++23, ืฉื™ืคื•ืจื™ื ื”ืงืฉื•ืจื™ื ืœืชืงืŸ ืฉืคืช C ื”ืขืชื™ื“ื™ (C2x), ืื•ืคื˜ื™ืžื™ื–ืฆื™ื•ืช ื—ื“ืฉื•ืช ืฉืœ ื‘ื™ืฆื•ืขื™ื.

ืฉื™ื ื•ื™ื™ื ืขื™ืงืจื™ื™ื:

  • ืžืฆื‘ ื‘ืจื™ืจืช ื”ืžื—ื“ืœ ืขื‘ื•ืจ ืฉืคืช C++ ื”ื•ื—ืœืฃ ืœืฉื™ืžื•ืฉ ื‘ืชืงืŸ C++17 (-std=gnu++17) ื‘ืžืงื•ื C++14 ืฉื”ื•ืฆืข ื‘ืขื‘ืจ. ืืคืฉืจ ืœื”ืฉื‘ื™ืช ื‘ืื•ืคืŸ ืกืœืงื˜ื™ื‘ื™ ืืช ืื•ืคืŸ ื”ืคืขื•ืœื” ื”ื—ื“ืฉ ืฉืœ C++17 ื‘ืขืช ืขื™ื‘ื•ื“ ืชื‘ื ื™ื•ืช ื”ืžืฉืชืžืฉื•ืช ื‘ืชื‘ื ื™ื•ืช ืื—ืจื•ืช ื›ืคืจืžื˜ืจ (-fno-new-ttp-matching).
  • ื ื•ืกืคื” ืชืžื™ื›ื” ื‘ื”ืืฆืช ื—ื•ืžืจื” ืฉืœ ื”ื›ืœื™ AddressSanitizer, ื”ืžืืคืฉืจ ืœืš ืœืงื‘ื•ืข ืืช ื”ืขื•ื‘ื“ื•ืช ืฉืœ ื’ื™ืฉื” ืœืื–ื•ืจื™ ื–ื™ื›ืจื•ืŸ ืžืฉื•ื—ืจืจื™ื, ืžืขื‘ืจ ืœื’ื‘ื•ืœื•ืช ื”ืžืื’ืจ ื”ืžื•ืงืฆื” ื•ืขื•ื“ ื›ืžื” ืกื•ื’ื™ื ืฉืœ ืฉื’ื™ืื•ืช ื‘ืขื‘ื•ื“ื” ืขื ื–ื™ื›ืจื•ืŸ. ื”ืืฆืช ื—ื•ืžืจื” ื–ืžื™ื ื” ื›ืจื’ืข ืจืง ืขื‘ื•ืจ ืืจื›ื™ื˜ืงื˜ื•ืจืช AArch64 ื•ืžืชืžืงื“ืช ื‘ืฉื™ืžื•ืฉ ื‘ืขืช ื”ื™ื“ื•ืจ ืฉืœ ืœื™ื‘ืช ืœื™ื ื•ืงืก. ื›ื“ื™ ืœืืคืฉืจ ื”ืืฆืช ื—ื•ืžืจื” ืฉืœ AddressSanitizer ื‘ืขืช ื‘ื ื™ื™ืช ืจื›ื™ื‘ื™ ืฉื˜ื— ืžืฉืชืžืฉ, ื ื•ืกืฃ ื”ื“ื’ืœ "-fsanitize=hwaddress", ื•ื“ื’ืœ ื”ืœื™ื‘ื” "-fsanitize=kernel-hwaddress".
  • ื‘ืขืช ื”ืคืงืช ืžื™ื“ืข ื‘ืื’ื™ื, ื ืขืฉื” ืฉื™ืžื•ืฉ ื‘ืคื•ืจืžื˜ DWARF 5 ื›ื‘ืจื™ืจืช ืžื—ื“ืœ, ืืฉืจ ื‘ื”ืฉื•ื•ืื” ืœื’ืจืกืื•ืช ืงื•ื“ืžื•ืช, ืžืืคืฉืจ ื™ืฆื™ืจืช ื ืชื•ื ื™ ื ื™ืคื•ื™ ื‘ืื’ื™ื ืงื•ืžืคืงื˜ื™ื™ื ื™ื•ืชืจ ื‘-25%. ืชืžื™ื›ื” ืžืœืื” ื‘-DWARF 5 ื“ื•ืจืฉืช ืœืคื—ื•ืช ื’ืจืกื” 2.35.2 ืฉืœ Binutils. ืคื•ืจืžื˜ DWARF 5 ื ืชืžืš ื‘ื›ืœื™ ืื™ืชื•ืจ ื‘ืื’ื™ื ืžืื– GDB 8.0, valgrind 3.17.0, elfutils 0.172 ื•-dwz 0.14. ื›ื“ื™ ืœื™ืฆื•ืจ ืงื‘ืฆื™ ื ื™ืคื•ื™ ื‘ืื’ื™ื ื‘ืืžืฆืขื•ืช ื’ืจืกืื•ืช ืื—ืจื•ืช ืฉืœ DWARF, ืืชื” ื™ื›ื•ืœ ืœื”ืฉืชืžืฉ ื‘ืืคืฉืจื•ื™ื•ืช "-gdwarf-2", "-gdwarf-3" ื•-"-gdwarf-4".
  • ื”ื“ืจื™ืฉื•ืช ืœืžื”ื“ืจื™ื ืฉื ื™ืชืŸ ืœื”ืฉืชืžืฉ ื‘ื”ื ืœื‘ื ื™ื™ืช GCC ื”ื•ื’ื“ืœื•. ื”ืžื”ื“ืจ ื—ื™ื™ื‘ ื›ืขืช ืœืชืžื•ืš ื‘ืชืงืŸ C++11 (ืงื•ื“ื ืœื›ืŸ ื”ื™ื” ืฆื•ืจืš ื‘-C++98), ื›ืœื•ืžืจ. ืื GCC 10 ื”ื™ื” ืžืกืคื™ืง ื›ื“ื™ ืœื‘ื ื•ืช GCC 3.4, ืื– ืœืคื—ื•ืช GCC 11 ื ื“ืจืฉ ื›ืขืช ื›ื“ื™ ืœื‘ื ื•ืช GCC 4.8.
  • ื”ืฉื ื•ื”ืžื™ืงื•ื ืฉืœ ืงื‘ืฆื™ื ืœืฉืžื™ืจืช dumps, ืงื‘ืฆื™ื ื–ืžื ื™ื™ื ื•ืžื™ื“ืข ื ื•ืกืฃ ื”ื“ืจื•ืฉ ืœืื•ืคื˜ื™ืžื™ื–ืฆื™ื” ืฉืœ LTO ืฉื•ื ื•. ืงื‘ืฆื™ื ื›ืืœื” ื ืฉืžืจื™ื ื›ืขืช ืชืžื™ื“ ื‘ืกืคืจื™ื™ื” ื”ื ื•ื›ื—ื™ืช ืืœื ืื ื›ืŸ ื”ื ืชื™ื‘ ืฉื•ื ื” ื‘ืžืคื•ืจืฉ ื‘ืืžืฆืขื•ืช ื”ืืคืฉืจื•ื™ื•ืช "-dumpbase", "-dumpdir" ื•-"-save-temps=*".
  • ื”ืชืžื™ื›ื” ื‘ืคื•ืจืžื˜ ื”ื‘ื™ื ืืจื™ BRIG ืœืฉื™ืžื•ืฉ ืขื ืฉืคืช HSAIL (Heterogeneous System Architecture Intermediate Language) ื”ื•ืฆืื” ืžืฉื™ืžื•ืฉ ื•ื‘ืงืจื•ื‘ ืชื•ืกืจ.
  • ื”ื™ื›ื•ืœื•ืช ืฉืœ ืžืฆื‘ ThreadSanitizer (-fsanitize=thread) ื”ื•ืจื—ื‘ื•, ืฉื ื•ืขื“ื• ืœื–ื”ื•ืช ืชื ืื™ ืžื™ืจื•ืฅ ื‘ืขืช ืฉื™ืชื•ืฃ ืฉืœ ืื•ืชื ื ืชื•ื ื™ื ืžืฉืจืฉื•ืจื™ื ืฉื•ื ื™ื ืฉืœ ื™ื™ืฉื•ื ืžืจื•ื‘ื” ื”ืœื™ื›ื™. ื”ืžื”ื“ื•ืจื” ื”ื—ื“ืฉื” ืžื•ืกื™ืคื” ืชืžื™ื›ื” ื‘ื–ืžื ื™ ืจื™ืฆื” ื•ื‘ืกื‘ื™ื‘ื•ืช ื—ืœื•ืคื™ื•ืช, ื›ืžื• ื’ื ืชืžื™ื›ื” ื‘ื›ืœื™ ื ื™ืคื•ื™ ื‘ืื’ื™ื KCSAN (Kernel Concurrency Sanitizer), ืฉื ื•ืขื“ ืœื–ื”ื•ืช ื‘ืื•ืคืŸ ื“ื™ื ืžื™ ืชื ืื™ ืžืจื•ืฅ ื‘ืชื•ืš ืœื™ื‘ืช ืœื™ื ื•ืงืก. ื ื•ืกืคื• ืืคืฉืจื•ื™ื•ืช ื—ื“ืฉื•ืช "-param tsan-distinguish-volatile" ื•-"-param tsan-instrument-func-entry-exit".
  • ืžืกืคืจื™ ืขืžื•ื“ื•ืช ื‘ื”ื•ื“ืขื•ืช ืื‘ื—ื•ืŸ ืžืฉืงืคื•ืช ื›ืขืช ืœื ืืช ืกืคื™ืจืช ื”ื‘ืชื™ื ืžืชื—ื™ืœืช ื”ืฉื•ืจื”, ืืœื ืœืžืขืฉื” ืืช ืžืกืคืจื™ ื”ืขืžื•ื“ื•ืช ืฉืœื•ืงื—ื™ื ื‘ื—ืฉื‘ื•ืŸ ืชื•ื•ื™ื ืžืจื•ื‘ื™ื ื‘ืชื™ื ื•ืชื•ื•ื™ื ื”ืชื•ืคืกื™ื ืžืกืคืจ ืžื™ืงื•ืžื™ื ื‘ืฉื•ืจื” (ืœื“ื•ื’ืžื”, ื”ืชื• ๐Ÿ™‚ ืชื•ืคืก ืฉื ื™ ืžื™ืงื•ืžื™ื ื• ืžืงื•ื“ื“ ื‘-4 ื‘ืชื™ื). ื‘ืื•ืคืŸ ื“ื•ืžื”, ืชื•ื•ื™ ื˜ืื‘ ืžื˜ื•ืคืœื™ื ื›ืขืช ื›ืžืกืคืจ ืžืกื•ื™ื ืฉืœ ืจื•ื•ื—ื™ื (ื ื™ืชืŸ ืœื”ื’ื“ืจื” ื‘ืืžืฆืขื•ืช ืืคืฉืจื•ืช -ftabstop, ื‘ืจื™ืจืช ืžื—ื“ืœ 8). ื›ื“ื™ ืœืฉื—ื–ืจ ืืช ื”ื”ืชื ื”ื’ื•ืช ื”ื™ืฉื ื”, โ€‹โ€‹ืžื•ืฆืขืช ื”ืืคืฉืจื•ืช "-fdiagnostics-column-unit=byte", ื•ื›ื“ื™ ืœืงื‘ื•ืข ืืช ื”ืขืจืš ื”ื”ืชื—ืœืชื™ (ืžืกืคื•ืจ ืž-0 ืื• 1) - ืืคืฉืจื•ืช "-fdiagnostics-column-origin=".
  • ื”ื•ื•ืงื˜ื•ืจื™ื–ืจ ืœื•ืงื— ื‘ื—ืฉื‘ื•ืŸ ืืช ื›ืœ ื”ืชื•ื›ืŸ ืฉืœ ื”ืคื•ื ืงืฆื™ื” ื•ืžื•ืกื™ืฃ ื™ื›ื•ืœื•ืช ืขื™ื‘ื•ื“ ื”ืงืฉื•ืจื•ืช ืœืฆืžืชื™ื ื•ื”ืคื ื™ื•ืช ืœื‘ืœื•ืงื™ื ืงื•ื“ืžื™ื ื‘ื’ืจืฃ ื–ืจื™ืžืช ื”ืฉืœื™ื˜ื” (CFG, ื’ืจืฃ ื–ืจื™ืžืช ื”ืฉืœื™ื˜ื”).
  • ื”ืื•ืคื˜ื™ืžื™ื–ืจ ืžื™ื™ืฉื ืืช ื”ื™ื›ื•ืœืช ืœื”ืžื™ืจ ืกื“ืจื” ืฉืœ ืคืขื•ืœื•ืช ืžื•ืชื ื•ืช ื”ืžืฉื•ื•ืช ืืช ืื•ืชื• ืžืฉืชื ื” ืœื‘ื™ื˜ื•ื™ ืžืชื’. ื‘ืขืชื™ื“, ื ื™ืชืŸ ืœืงื•ื“ื“ ืืช ื‘ื™ื˜ื•ื™ ื”ืžืชื’ ื‘ืืžืฆืขื•ืช ื”ื•ืจืื•ืช ื‘ื“ื™ืงืช ืกื™ื‘ื™ื•ืช (ื ื•ืกืคื” ืืคืฉืจื•ืช "-fbit-tests" ื›ื“ื™ ืœืฉืœื•ื˜ ื‘ื”ืžืจื” ื›ื–ื•).
  • ืื•ืคื˜ื™ืžื™ื–ืฆื™ื•ืช ื‘ื™ืŸ-ื”ืœื™ื›ื™ื ืžืฉื•ืคืจื•ืช. ื ื•ืกืฃ ื›ืจื˜ื™ืก IPA-modref ื—ื“ืฉ (-fipa-modref) ื›ื“ื™ ืœืขืงื•ื‘ ืื—ืจ ืชื•ืคืขื•ืช ืœื•ื•ืื™ ื‘ืขืช ืงืจื™ืื” ืœืคื•ื ืงืฆื™ื•ืช ื•ืœืฉืคืจ ืืช ื“ื™ื•ืง ื”ื ื™ืชื•ื—. ื”ื˜ืžืขื” ืžืฉื•ืคืจืช ืฉืœ ืžืขื‘ืจ IPA-ICF (-fipa-icf), ืžื” ืฉืžืคื—ื™ืช ืืช ืฆืจื™ื›ืช ื”ื–ื™ื›ืจื•ืŸ ื‘ืžื”ืœืš ื”ื”ื™ื“ื•ืจ ื•ืžื’ื“ื™ืœ ืืช ืžืกืคืจ ื”ืคื•ื ืงืฆื™ื•ืช ื”ืžืื•ื—ื“ื•ืช ืฉืขื‘ื•ืจืŸ ืžืฉื•ืœื‘ื™ื ื‘ืœื•ืงื™ื ื–ื”ื™ื ืฉืœ ืงื•ื“. ื‘ืžืขื‘ืจ IPA-CP (Interprocedural constant propagation), ื”ื”ื™ื•ืจื™ืกื˜ื™ืงื” ืฉืœ ื”ื—ื™ื–ื•ื™ ืฉื•ืคืจื•, ืชื•ืš ื”ืชื—ืฉื‘ื•ืช ื‘ื’ื‘ื•ืœื•ืช ื•ืชื›ื•ื ื•ืช ื™ื“ื•ืขื•ืช ืฉืœ ื”ืœื•ืœืื•ืช.
  • ื‘-Linking Time Optimizations (LTO), ืคื•ืจืžื˜ ื”-bytecode ืขื•ื‘ืจ ืื•ืคื˜ื™ืžื™ื–ืฆื™ื” ื›ื“ื™ ืœื”ืงื˜ื™ืŸ ืืช ื”ื’ื•ื“ืœ ื•ืœืฉืคืจ ืืช ืžื”ื™ืจื•ืช ื”ืขื™ื‘ื•ื“. ืฆืจื™ื›ืช ืฉื™ื ื–ื™ื›ืจื•ืŸ ืžื•ืคื—ืชืช ื‘ืฉืœื‘ ื”ืงื™ืฉื•ืจ.
  • ื‘ืžื ื’ื ื•ืŸ ื”ืื•ืคื˜ื™ืžื™ื–ืฆื™ื” ื”ืžื‘ื•ืกืก ืขืœ ืชื•ืฆืื•ืช ืคืจื•ืคื™ืœ ืงื•ื“ (PGO - Profile-guided Optimization), ื”ืžืืคืฉืจ ื™ืฆื™ืจืช ืงื•ื“ ืื•ืคื˜ื™ืžืœื™ ื™ื•ืชืจ ืขืœ ื‘ืกื™ืก ื ื™ืชื•ื— ืชื›ื•ื ื•ืช ื‘ื™ืฆื•ืข, ื’ื•ื“ืœ ื”ืงื‘ืฆื™ื ืขื ื ืชื•ื ื™ GCOV ืžืฆื˜ืžืฆื ืขืงื‘ ืืจื™ื–ื” ืงื•ืžืคืงื˜ื™ืช ื™ื•ืชืจ ืฉืœ ืืคืก ืžื•ื ื™ื. . ืžืฆื‘ "-fprofile-values" ืžืฉื•ืคืจ ืขืœ ื™ื“ื™ ืžืขืงื‘ ืื—ืจ ืคืจืžื˜ืจื™ื ื ื•ืกืคื™ื ื‘ืงืจื™ืื•ืช ืขืงื™ืคื•ืช.
  • ื”ื˜ืžืขืช ืชืงืŸ OpenMP 5.0 (Open Multi-Processing), ื”ืžื’ื“ื™ืจ ืืช ื”-API ื•ืฉื™ื˜ื•ืช ืœื™ื™ืฉื•ื ืฉื™ื˜ื•ืช ืชื›ื ื•ืช ืžืงื‘ื™ืœื•ืช ืขืœ ืžืขืจื›ื•ืช ืžืจื•ื‘ื•ืช ืœื™ื‘ื•ืช ื•ื”ื™ื‘ืจื™ื“ื™ื•ืช (CPU+GPU/DSP) ืขื ื™ื—ื™ื“ื•ืช ื–ื™ื›ืจื•ืŸ ื•ืงื˜ื•ืจื™ื–ืฆื™ื” ืžืฉื•ืชืคื™ื (SIMD), ื ืžืฉืš. ื ื•ืกืคื” ืชืžื™ื›ื” ืจืืฉื•ื ื™ืช ื‘ื”ื ื—ื™ื™ืช ื”ื”ืงืฆืื” ื•ื”ื™ื›ื•ืœืช ืœื”ืฉืชืžืฉ ื‘ืœื•ืœืื•ืช ื”ื˜ืจื•ื’ื ื™ื•ืช ื‘ื‘ื ื™ื™ืช OpenMP. ื”ื˜ืžื™ืขื” ืชืžื™ื›ื” ื‘ืžืฉืชื ื” ื”ืกื‘ื™ื‘ื” OMP_TARGET_OFFLOAD.
  • ื”ื™ื™ืฉื•ื ืฉืœ ืžืคืจื˜ ื”ืชื›ื ื•ืช ื”ืžืงื‘ื™ืœื™ OpenACC 2.6 ืฉืกื•ืคืง ืœืฉืคื•ืช C, C++ ื•-Fortran ืฉื•ืคืจ, ื”ืžื’ื“ื™ืจ ื›ืœื™ื ืœื”ื•ืจื“ืช ืคืขื•ืœื•ืช ืขืœ GPUs ื•ืžืขื‘ื“ื™ื ืžื™ื•ื—ื“ื™ื, ื›ื’ื•ืŸ NVIDIA PTX.
  • ืขื‘ื•ืจ ืฉืคื•ืช C, ื”ื•ื˜ืžืขื” ืชื›ื•ื ื” ื—ื“ืฉื” "no_stack_protector", ืฉื ื•ืขื“ื” ืœืกืžืŸ ืคื•ื ืงืฆื™ื•ืช ืฉืขื‘ื•ืจืŸ ืื™ืŸ ืœื”ืคืขื™ืœ ื”ื’ื ืช ืžื—ืกื ื™ืช ("-fstack-protector"). ื”ืชื›ื•ื ื” "malloc" ื”ื•ืจื—ื‘ื” ื›ื“ื™ ืœืชืžื•ืš ื‘ื–ื™ื”ื•ื™ ืฉืœ ืฆืžื“ื™ ืงืจื™ืื•ืช ืœื”ืงืฆืื” ื•ืฉื—ืจื•ืจ ื–ื™ื›ืจื•ืŸ (ืžืงืฆื”/ืžืงืฆื”), ื”ืžืฉืžืฉ ื‘ื ืชื— ื”ืกื˜ื˜ื™ ืœื–ื™ื”ื•ื™ ืฉื’ื™ืื•ืช ืื•ืคื™ื™ื ื™ื•ืช ื‘ืขื‘ื•ื“ื” ืขื ื–ื™ื›ืจื•ืŸ (ื“ืœื™ืคื•ืช ื–ื™ื›ืจื•ืŸ, ืฉื™ืžื•ืฉ ืœืื—ืจ ืฉื—ืจื•ืจ, ืงืจื™ืื•ืช ื›ืคื•ืœื•ืช ืœืคื•ื ืงืฆื™ื” ื”ื—ื•ืคืฉื™ืช ื•ื›ื•') ื•ื‘ืื–ื”ืจื•ืช ืžื”ื“ืจ "-Wmismatched-dealloc", "-Wmismatched-new-delete" ื•-"-Wfree-nonheap-object", ื”ืžื•ื“ื™ืขื™ื ืขืœ ื—ื•ืกืจ ืขืงื‘ื™ื•ืช ื‘ื™ืŸ ืคืขื•ืœื•ืช ื”ืงืฆืืช ื–ื™ื›ืจื•ืŸ ื•ืคืขื•ืœื•ืช ื”ืงืฆืืช ื–ื™ื›ืจื•ืŸ.
  • ืื–ื”ืจื•ืช ื—ื“ืฉื•ืช ื ื•ืกืคื• ืขื‘ื•ืจ ืฉืคืช C:
    • "-Wmismatched-dealloc" (ืžื•ืคืขืœ ื›ื‘ืจื™ืจืช ืžื—ื“ืœ) - ืžืชืจื™ืข ืขืœ ืคืขื•ืœื•ืช ื‘ื™ื˜ื•ืœ ื–ื™ื›ืจื•ืŸ ื”ืžืฉืชืžืฉื•ืช ื‘ืžืฆื‘ื™ืข ืฉืื™ื ื• ืชื•ืื ืœืคื•ื ืงืฆื™ื•ืช ื”ืงืฆืืช ื–ื™ื›ืจื•ืŸ.
    • "-Wsizeof-array-div" (ืžื•ืคืขืœ ื›ืืฉืจ "-Wall" ืžืฆื•ื™ืŸ) - ืžื–ื”ื™ืจ ืขืœ ื—ืœื•ืงืช ืฉื ื™ sizeof ืื•ืคืจื˜ื•ืจื™ื ืื ื”ืžื—ืœืง ืื™ื ื• ืชื•ืื ืœื’ื•ื“ืœ ืืœืžื ื˜ ื”ืžืขืจืš.
    • "-Wstringop-overread" (ืžื•ืคืขืœ ื›ื‘ืจื™ืจืช ืžื—ื“ืœ) - ืžืชืจื™ืข ืขืœ ืงืจื™ืื” ืœืคื•ื ืงืฆื™ื™ืช ืžื—ืจื•ื–ืช ืฉืงื•ืจืืช ื ืชื•ื ื™ื ืžืื–ื•ืจ ืžื—ื•ืฅ ืœื’ื‘ื•ืœ ื”ืžืขืจืš.
    • "-Wtsan" (ืžื•ืคืขืœ ื›ื‘ืจื™ืจืช ืžื—ื“ืœ) - ืžื–ื”ื™ืจ ืขืœ ืฉื™ืžื•ืฉ ื‘ืชื›ื•ื ื•ืช (ื›ื’ื•ืŸ std::atomic_thread_fence) ืฉืื™ื ืŸ ื ืชืžื›ื•ืช ื‘-ThreadSanitizer.
    • "-Warray-parameter" ื•-"-Wvla-parameter" (ืžื•ืคืขืœ ื‘ืขืช ืฆื™ื•ืŸ "-Wall") - ืžืชืจื™ืข ืขืœ ืขืงื™ืคื” ืฉืœ ืคื•ื ืงืฆื™ื•ืช ืขื ื”ืฆื”ืจื•ืช ืœื ืชื•ืืžื•ืช ืฉืœ ืืจื’ื•ืžื ื˜ื™ื ื”ืงืฉื•ืจื™ื ืœืžืขืจื›ื™ื ื‘ืื•ืจืš ืงื‘ื•ืข ื•ืžืฉืชื ื”.
    • ื”ืื–ื”ืจื” "-Wuninitialized" ืžื–ื”ื” ื›ืขืช ื ื™ืกื™ื•ื ื•ืช ืงืจื™ืื” ืžื–ื™ื›ืจื•ืŸ ืœื ืžืื•ืชื—ืœ ืฉื”ื•ืงืฆื” ื“ื™ื ืžื™ืช.
    • ื”ืื–ื”ืจื” "-Wfree-nonheap-object" ืžืจื—ื™ื‘ื” ืืช ื”ื”ื’ื“ืจื” ืฉืœ ืžืงืจื™ื ืฉื‘ื”ื ืคื•ื ืงืฆื™ื•ืช ื‘ื™ื˜ื•ืœ ื”ืงืฆืืช ื–ื™ื›ืจื•ืŸ ื ืงืจืื•ืช ืขื ืžืฆื‘ื™ืข ืฉืœื ื”ื•ืฉื’ ื‘ืืžืฆืขื•ืช ืคื•ื ืงืฆื™ื•ืช ื”ืงืฆืืช ื–ื™ื›ืจื•ืŸ ื“ื™ื ืžื™ื•ืช.
    • ื”ืื–ื”ืจื” "-Wmaybe-uninitialized" ื”ืจื—ื™ื‘ื” ืืช ื”ื–ื™ื”ื•ื™ ืฉืœ ื”ืขื‘ืจืช ืžืฆื‘ื™ืขื™ื ืœืคื•ื ืงืฆื™ื•ืช ื”ืžืชื™ื™ื—ืกื•ืช ืœืžื™ืงื•ืžื™ ื–ื™ื›ืจื•ืŸ ืœื ืžืื•ืชื—ืœื™ื.
  • ืขื‘ื•ืจ ืฉืคืช C, ื—ืœืง ืžื”ืชื›ื•ื ื•ืช ื”ื—ื“ืฉื•ืช ืฉืคื•ืชื—ื• ื‘ืžืกื’ืจืช ืชืงืŸ C2X ื™ื•ืฉืžื• (ืžื•ืคืขืœ ืขืœ ื™ื“ื™ ืฆื™ื•ืŸ -std=c2x ื•-std=gnu2x): ืคืงื•ื“ื•ืช ืžืืงืจื• BOOL_MAX ื•-BOOL_WIDTH, ืฆื™ื•ืŸ ืื•ืคืฆื™ื•ื ืœื™ ืฉืœ ืฉืžื•ืช ืฉืœ ืคืจืžื˜ืจื™ื ืฉืื™ื ื ื‘ืฉื™ืžื•ืฉ ื‘ืคื•ื ืงืฆื™ื” ื”ื’ื“ืจื•ืช (ื›ืžื• ื‘-C++), ืชื›ื•ื ื” "[ [nodiscard]]", ืื•ืคืจื˜ื•ืจ ืงื“ื-ืžืขื‘ื“ "__has_c_attribute", ืคืงื•ื“ื•ืช ืžืืงืจื• FLT_IS_IEC_60559, DBL_IS_IEC_60559, LDBL_IS_IEC_60559, __STDC_WANT_IEC_60559__XNUMX_EXT_XNUMX__XNUMX, DSN_LT, INBLAN, DSN, IN AN, DEC_INFINITY ื•-DEC _NAN, NaN=ืžืืงืจื• ืขื‘ื•ืจ FloatN, _FloatNx ื•-_DecimalN, ื™ื›ื•ืœืช ืœืฆื™ื™ืŸ ืกื™ืžื ื™ ืงืคื™ืฆื” ืœืคื ื™ ื”ืฆื”ืจื•ืช ื•ื‘ืกื•ืฃ ื”ืฆื”ืจื•ืช ืžื•ืจื›ื‘ื•ืช.
  • ืขื‘ื•ืจ C++, ื™ื•ืฉืžื• ื—ืœืง ืžื”ืฉื™ื ื•ื™ื™ื ื•ื”ื—ื™ื“ื•ืฉื™ื ื”ืžื•ืฆืขื™ื ื‘ืชืงืŸ C++20, ื›ื•ืœืœ ืคื•ื ืงืฆื™ื•ืช ื•ื™ืจื˜ื•ืืœื™ื•ืช "consteval virtual", ืคืกืื•ื“ื•-ื”ื•ืจืกื™ื ืœืกื•ืฃ ืžื—ื–ื•ืจ ื”ื—ื™ื™ื ืฉืœ ืื•ื‘ื™ื™ืงื˜ื™ื, ื”ืฉื™ืžื•ืฉ ื‘ืžื—ืœืงื” enum ื• ื—ื™ืฉื•ื‘ ื’ื•ื“ืœ ืžืขืจืš ื‘ื‘ื™ื˜ื•ื™ "ื”ื—ื“ืฉ".
  • ืขื‘ื•ืจ C++, ื ื•ืกืคื” ืชืžื™ื›ื” ื ื™ืกื™ื•ื ื™ืช ืขื‘ื•ืจ ื›ืžื” ืฉื™ืคื•ืจื™ื ื”ืžืคื•ืชื—ื™ื ืขื‘ื•ืจ ืชืงืŸ C++23 ื”ืขืชื™ื“ื™ (-std=c++23, -std=gnu++23, -std=c++2b, -std=gnu ++2b). ืœื“ื•ื’ืžื”, ื™ืฉ ื›ืขืช ืชืžื™ื›ื” ื‘ืกื™ื•ืžืช ื”ืžื™ืœื•ืœื™ "zu" ืขื‘ื•ืจ ืขืจื›ื™ size_t ื—ืชื•ืžื™ื.
  • libstdc++ ืฉื™ืคืจื” ืชืžื™ื›ื” ื‘ืชืงืŸ C++17, ื›ื•ืœืœ ื”ืฆื’ืช ื™ื™ืฉื•ืžื™ std::from_chars ื•-std::to_chars ืขื‘ื•ืจ ืกื•ื’ื™ ื ืงื•ื“ื” ืฆืคื”. ื”ื˜ืžื™ืขื• ืืœืžื ื˜ื™ื ื—ื“ืฉื™ื ืฉืœ ืชืงืŸ C++20, ื›ื•ืœืœ std::bit_cast, std::source_location, ืคืขื•ืœื•ืช ืื˜ื•ืžื™ื•ืช ืœื—ื›ื•ืช ื•ื”ื•ื“ื™ืขื•, , , , , ื›ืžื• ื’ื ืืœืžื ื˜ื™ื ืฉืœ ืชืงืŸ C++ ืขืชื™ื“ื™ 23 (std::to_underlying, std::is_scoped_enum). ื ื•ืกืคื” ืชืžื™ื›ื” ื ื™ืกื™ื•ื ื™ืช ืœืกื•ื’ื™ื ืœืขื™ื‘ื•ื“ ื ืชื•ื ื™ื ืžืงื‘ื™ืœ (SIMD, Data-Parallel Types). ื”ื™ื™ืฉื•ื ืฉืœ std::uniform_int_distribution ื”ื•ืืฅ.
  • ื”ืกื™ืจ ืืช ื“ื’ืœ ืื™ื›ื•ืช ื”ืืœืคื ืž-libgccjit, ืกืคืจื™ื™ื” ืžืฉื•ืชืคืช ืœื”ื˜ืžืขืช ืžื—ื•ืœืœ ืงื•ื“ ื‘ืชื”ืœื™ื›ื™ื ืื—ืจื™ื ื•ืฉื™ืžื•ืฉ ื‘ื• ืœืืจื’ื•ืŸ ื”ื™ื“ื•ืจ JIT ืฉืœ ืงื•ื“ ื‘ืชื™ื ืœืชื•ืš ืงื•ื“ ืžื›ื•ื ื”. ื ื•ืกืคื” ืืช ื”ื™ื›ื•ืœืช ืœื‘ื ื•ืช libgccjit ืขื‘ื•ืจ MinGW.
  • ื ื•ืกืคื” ืชืžื™ื›ื” ื‘ืืจื›ื™ื˜ืงื˜ื•ืจืช AArch64 Armv8-R (-march=armv8-r). ืขื‘ื•ืจ ืืจื›ื™ื˜ืงื˜ื•ืจื•ืช AArch64 ื•-ARM, ื ื•ืกืคื” ืชืžื™ื›ื” ื‘ืžืขื‘ื“ื™ื (ืคืจืžื˜ืจื™ื -mcpu ื•-mtune): Arm Cortex-A78 (cortex-a78), Arm Cortex-A78AE (cortex-a78ae), Arm Cortex-A78C (cortex-a78c) , Arm Cortex- X1 (cortex-x1), Arm Neoverse V1 (neoverse-v1) ื•-Arm Neoverse N2 (neoverse-n2). ื›ืžื• ื›ืŸ ื ื•ืกืคื• ืžืขื‘ื“ื™ Fujitsu A64FX (a64fx) ื•- Arm Cortex-R82 (cortex-r82), ื”ืชื•ืžื›ื™ื ืจืง ื‘ืืจื›ื™ื˜ืงื˜ื•ืจืช AArch64.
  • ื ื•ืกืคื” ืชืžื™ื›ื” ื‘ืฉื™ืžื•ืฉ ื‘ื”ื•ืจืื•ืช SIMD Armv8.3-a (AArch64/AArch32), SVE (AArch64), SVE2 (AArch64) ื•-MVE (AArch32 M-profile) ืœืคืขื•ืœื•ืช ืื•ื˜ื•ืžื˜ื™ื•ืช ืœื‘ื™ืฆื•ืข ื—ื™ื‘ื•ืจ, ื—ื™ืกื•ืจ, ื›ืคืœ ื•ื’ืจืกืื•ืช ืฉืœ ื—ื™ื‘ื•ืจ/ื—ื™ืกื•ืจ ืžืขืœ ืžืกืคืจื™ื ืžืกื•ื‘ื›ื™ื. ื ื•ืกืคื” ืชืžื™ื›ื” ืจืืฉื•ื ื™ืช ืœืื•ืงื˜ื•ืจื™ื–ืฆื™ื” ืขื‘ื•ืจ ARM ื‘ืืžืฆืขื•ืช ืขืจื›ืช ื”ื”ื•ืจืื•ืช ืฉืœ MVE.
  • ืขื‘ื•ืจ ืคืœื˜ืคื•ืจืžื•ืช ARM, ืžืกื•ืคืง ืกื˜ ืฉืœื ืฉืœ ืคื•ื ืงืฆื™ื•ืช C ืžืฉื•ืœื‘ื•ืช ืžื”ื“ืจ (Intrinsics), ื”ืžื•ื—ืœืคื•ืช ื‘ื”ื•ืจืื•ืช ื•ืงื˜ื•ืจ ืžื•ืจื—ื‘ื•ืช (SIMD), ื”ืžื›ืกื•ืช ืืช ื›ืœ ื”ื•ืจืื•ืช ื”-NEON ื”ืžืชื•ืขื“ื•ืช ื‘ืžืคืจื˜ ACLE Q3 2020.
  • ืชืžื™ื›ื” ื‘-gfx908 GPU ื ื•ืกืคื” ืœืงืฆื” ื”ืขื•ืจืคื™ ืœื™ืฆื™ืจืช ืงื•ื“ ืขื‘ื•ืจ GPUs ืฉืœ AMD ื”ืžื‘ื•ืกืกื™ื ืขืœ ื”ืžื™ืงืจื•-ืืจื›ื™ื˜ืงื˜ื•ืจื” ืฉืœ GCN.
  • ื ื•ืกืคื” ืชืžื™ื›ื” ื‘ืžืขื‘ื“ื™ื ื—ื“ืฉื™ื ื•ืชื•ืกืคื™ ืขืจื›ืช ื”ื•ืจืื•ืช ื—ื“ืฉื™ื ืฉื™ื•ื˜ืžื• ื‘ื”ื:
    • Intel Sapphire Rapids (-march=sapphirarapids, ืžืืคืฉืจ ืชืžื™ื›ื” ื‘ื”ื•ืจืื•ืช MOVDIRI, MOVDIR64B, AVX512VP2INTERSECT, ENQCMD, CLDEMOTE, SERIALISE, PTWRITE, WAITPKG, TSXLDTRK, AMT-TILE, AMX-INT8, AVX-INT16, AVX-X.
    • Intel Alderlake (-march=alderlake, ืžืืคืฉืจ ืชืžื™ื›ื” ื‘ื”ื•ืจืื•ืช CLDEMOTE, PTWRITE, WAITPKG, SERIALIZE, KEYLOCKER, AVX-VNNI ื•-HRESET).
    • Intel Rocketlake (-march=rocketlake, ื‘ื“ื•ืžื” ืœ-Rocket Lake ืœืœื ืชืžื™ื›ื” ื‘-SGX).
    • AMD Zen 3 (-march=znver3).
  • ืขื‘ื•ืจ ืžืขืจื›ื•ืช IA-32/x86-64 ื”ืžื‘ื•ืกืกื•ืช ืขืœ ืžืขื‘ื“ื™ Intel, ื ื•ืกืคื” ืชืžื™ื›ื” ื‘ื”ื•ืจืื•ืช ืžืขื‘ื“ ื—ื“ืฉื•ืช TSXLDTRK, SERIALISE, HRESET, UINTRKEYLOCKER, AMX-TILE, AMX-INT8, AMX-BF16, AVX-VNNI.
  • ื ื•ืกืคื” ืชืžื™ื›ื” ื‘ื“ื’ืœื™ "-march=x86-64-v[234]" ืœื‘ื—ื™ืจืช ืจืžื•ืช ืืจื›ื™ื˜ืงื˜ื•ืจืช x86-64 (v2 - ืžื›ืกื” ื”ืจื—ื‘ื•ืช SSE4.2, SSSE3, POPCNT ื•-CMPXCHG16B; v3 - AVX2 ื•-MOVBE; v4 - AVX-512 ).
  • ื ื•ืกืคื” ืชืžื™ื›ื” ืขื‘ื•ืจ ืžืขืจื›ื•ืช RISC-V ืขื ืกื“ืจ ื‘ืชื™ื ื’ื“ื•ืœ. ื ื•ืกืคื” ืืคืฉืจื•ืช "-misa-spec=*" ืœื‘ื—ื™ืจืช ื”ื’ืจืกื” ืฉืœ ืžืคืจื˜ ืืจื›ื™ื˜ืงื˜ื•ืจืช ืขืจื›ืช ื”ื”ื•ืจืื•ืช RISC-V. ื ื•ืกืคื” ืชืžื™ื›ื” ืขื‘ื•ืจ AddressSanitizer ื•ื”ื’ื ื” ืขืœ ืžื—ืกื ื™ืช ื‘ืืžืฆืขื•ืช ืชื’ื™ื•ืช ืงื ืจื™ื•ืช.
  • ืฉื™ืคื•ืจ ืžืชืžืฉืš ืฉืœ ืžืฆื‘ ื”ื ื™ืชื•ื— ื”ืกื˜ื˜ื™ "-fanalyzer", ื”ืžื‘ืฆืข ื ื™ืชื•ื— ื‘ื™ืŸ-ืคืจื•ืฆื“ื•ืจืœื™ ืขืชื™ืจ ืžืฉืื‘ื™ื ืฉืœ ื ืชื™ื‘ื™ ื‘ื™ืฆื•ืข ืงื•ื“ ื•ื–ืจื™ืžื•ืช ื ืชื•ื ื™ื ื‘ืชื•ื›ื ื™ืช. ื”ืžืฆื‘ ืžืกื•ื’ืœ ืœื–ื”ื•ืช ื‘ืขื™ื•ืช ื‘ืฉืœื‘ ื”ืงื•ืžืคื™ืœืฆื™ื”, ื›ื’ื•ืŸ ืงืจื™ืื•ืช ื›ืคื•ืœื•ืช ืœืคื•ื ืงืฆื™ื™ืช free() ืขื‘ื•ืจ ืื–ื•ืจ ื–ื™ื›ืจื•ืŸ ืื—ื“, ื“ืœื™ืคื•ืช ืฉืœ ืžืชืืจ ืงื‘ืฆื™ื, ื ื™ืชื•ืง ื•ื”ืขื‘ืจืช ืžืฆื‘ื™ืขื™ null, ื’ื™ืฉื” ืœื‘ืœื•ืงื™ื ืฉืœ ื–ื™ื›ืจื•ืŸ ืžืฉื•ื—ืจืจื™ื, ืฉื™ืžื•ืฉ ื‘ืขืจื›ื™ื ืœื ืžืื•ืชื—ืœื™ื ื•ื›ื•'. ื‘ื’ืจืกื” ื”ื—ื“ืฉื”:
    • ื”ืงื•ื“ ืœืžืขืงื‘ ืื—ืจ ืžืฆื‘ ื”ืชื•ื›ื ื™ืช ื ื›ืชื‘ ืžื—ื“ืฉ ืœื—ืœื•ื˜ื™ืŸ. ื‘ืขื™ื•ืช ื‘ืกืจื™ืงืช ืงื‘ืฆื™ C ื’ื“ื•ืœื™ื ืžืื•ื“ ื ืคืชืจื•.
    • ื ื•ืกืคื” ืชืžื™ื›ื” ืจืืฉื•ื ื™ืช ื‘-C++.
    • ื ื™ืชื•ื— ื”ืงืฆืืช ื–ื™ื›ืจื•ืŸ ื•ื”ืงืฆืืช ื–ื™ื›ืจื•ืŸ ื”ื•ืคืฉื˜ ืžื”ืคื•ื ืงืฆื™ื•ืช ื”ืกืคืฆื™ืคื™ื•ืช ืฉืœ malloc ื•ื”ื—ื™ื ืžื™ื•ืช, ื•ื›ืขืช ื”ื•ื ืชื•ืžืš ื‘ื—ื“ืฉ/ืžื—ืง ื•ื‘ื—ื“ืฉ[]/ืžื—ืง[].
    • ืื–ื”ืจื•ืช ื—ื“ืฉื•ืช ื ื•ืกืคื•: -Wanalyzer-shift-count-negative, -Wanalyzer-shift-count-overflow, -Wanalyzer-write-to-const ื•-Wanalyzer-write-to-string-literal.
    • ื ื•ืกืคื• ืืคืฉืจื•ื™ื•ืช ื ื™ืคื•ื™ ื‘ืื’ื™ื ื—ื“ืฉื•ืช -fdump-analyzer-json ื•-fno-analyzer-feasibility.
    • ื”ื•ื˜ืžืขื” ื”ื™ื›ื•ืœืช ืœื”ืจื—ื™ื‘ ืืช ื”ื ืชื— ื‘ืืžืฆืขื•ืช ืชื•ืกืคื™ื ืขื‘ื•ืจ GCC (ืœื“ื•ื’ืžื”, ื”ื•ื›ืŸ ืชื•ืกืฃ ืœื‘ื“ื™ืงืช ืฉื™ืžื•ืฉ ืฉื’ื•ื™ ื‘ื ืขื™ืœื” ื’ืœื•ื‘ืœื™ืช (GIL) ื‘-CPython).

ืžืงื•ืจ: OpenNet.ru

ื”ื•ืกืคืช ืชื’ื•ื‘ื”