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

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

GCC 10.1 ื‘ื•ืœื˜ ื‘ื™ื™ืฉื•ื ืฉืœ ื—ื™ื“ื•ืฉื™ื ืจื‘ื™ื ื‘ืฉืคืช C++ ืฉืคื•ืชื—ื” ืขื‘ื•ืจ ืชืงืŸ C++20, ืฉื™ืคื•ืจื™ื ื”ืงืฉื•ืจื™ื ืœืชืงืŸ ืฉืคืช C ื”ืขืชื™ื“ื™ (C2x), ืื•ืคื˜ื™ืžื™ื–ืฆื™ื•ืช ื—ื“ืฉื•ืช ื‘-backends ืžื”ื“ืจ ื•ืชืžื™ื›ื” ื ื™ืกื™ื•ื ื™ืช ืžืฆื‘ ื ื™ืชื•ื— ืกื˜ื˜ื™. ื‘ื ื•ืกืฃ, ื‘ืžื”ืœืš ื”ื›ื ืช ืกื ื™ืฃ ื—ื“ืฉ, ื”ืคืจื•ื™ืงื˜ ื”ืขื‘ื™ืจ ืืช ื”ืžืื’ืจ ืž-SVN ืœ-Git.

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

  • ื ื•ืกืฃ ืื•ืคืŸ ื ื™ืกื•ื™ ืฉืœ ื ื™ืชื•ื— ืกื˜ื˜ื™"-ืžืขืจื™ืฅ", ื”ืžื‘ืฆืขืช ื ื™ืชื•ื— ื‘ื™ืŸ-ืคืจื•ืฆื“ื•ืจืœื™ ืขืชื™ืจ ืžืฉืื‘ื™ื ืฉืœ ื ืชื™ื‘ื™ ื‘ื™ืฆื•ืข ืงื•ื“ ื•ื–ืจื™ืžื•ืช ื ืชื•ื ื™ื ื‘ืชื•ื›ื ื™ืช. ื”ืžืฆื‘ ืžืกื•ื’ืœ ืœื–ื”ื•ืช ื‘ืขื™ื•ืช ื‘ืฉืœื‘ ื”ืงื•ืžืคื™ืœืฆื™ื”, ื›ื’ื•ืŸ ืงืจื™ืื•ืช ื›ืคื•ืœื•ืช ืœืคื•ื ืงืฆื™ื™ืช free() ืขื‘ื•ืจ ืื–ื•ืจ ื–ื™ื›ืจื•ืŸ ืื—ื“, ื“ืœื™ืคื•ืช ืฉืœ ืžืชืืจ ืงื‘ืฆื™ื, ื ื™ืชื•ืง ื•ื”ืขื‘ืจืช ืžืฆื‘ื™ืขื™ null, ื’ื™ืฉื” ืœื‘ืœื•ืงื™ื ืฉืœ ื–ื™ื›ืจื•ืŸ ืžืฉื•ื—ืจืจื™ื, ืฉื™ืžื•ืฉ ื‘ืขืจื›ื™ื ืœื ืžืื•ืชื—ืœื™ื ื•ื›ื•'. ื”ืฉื™ืžื•ืฉ ื‘ืžืฆื‘ ื”ื—ื“ืฉ ืœืงื•ื“ OpenSSL ื›ื‘ืจ ืื™ืคืฉืจ ืœื–ื”ื•ืช ืคื’ื™ืขื•ืช ืžืกื•ื›ื ืช.
  • ืื•ืคื˜ื™ืžื™ื–ืฆื™ื•ืช ื‘ื™ืŸ-ื”ืœื™ื›ื™ื ืžืฉื•ืคืจื•ืช. ื›ืจื˜ื™ืก IPA-SRA (Interprocedural Scalar Shared Replacement) ืขื•ืฆื‘ ืžื—ื“ืฉ ื›ืš ืฉื™ืขื‘ื•ื“ ื‘ื–ืžืŸ ืงืฉื™ืจื”, ื•ื‘ื™ืŸ ื”ื™ืชืจ ืžืกื™ืจ ื›ืขืช ืขืจื›ื™ื ืžื—ื•ืฉื‘ื™ื ื•ืžื•ื—ื–ืจื™ื ืฉืื™ื ื ื‘ืฉื™ืžื•ืฉ. ื‘ืžืฆื‘ ื”ืื•ืคื˜ื™ืžื™ื–ืฆื™ื” "-O2", ืืคืฉืจื•ืช "-finline-functions" ืžื•ืคืขืœืช, ืืฉืจ ืžื›ื•ื•ื ื ืช ืžื—ื“ืฉ ื›ื“ื™ ืœื”ืขื“ื™ืฃ ืงื•ื“ ืงื•ืžืคืงื˜ื™ ื™ื•ืชืจ ืขืœ ืคื ื™ ื‘ื™ืฆื•ืขื™ ื‘ื™ืฆื•ืข. ื”ืขื‘ื•ื“ื” ืฉืœ ื”ื”ื™ื•ืจื™ืกื˜ื™ืงื” ืœืคืจื™ืกืช ืคื•ื ืงืฆื™ื•ืช ืžื•ื˜ื‘ืขื•ืช ื”ื•ืืฆื”. ื”ื™ื•ืจื™ืกื˜ื™ืงื” ืฉืœ ื”ืจื—ื‘ื” ืžื•ื˜ื‘ืขืช ื•ืฉื™ื‘ื•ื˜ ืคื•ื ืงืฆื™ื•ืช ื™ื›ื•ืœื” ื›ืขืช ืœื”ืฉืชืžืฉ ื‘ืžื™ื“ืข ืขืœ ื˜ื•ื•ื—ื™ ืขืจื›ื™ื ื›ื“ื™ ืœื—ื–ื•ืช ืืช ื”ื™ืขื™ืœื•ืช ืฉืœ ื˜ืจื ืกืคื•ืจืžืฆื™ื•ืช ื‘ื•ื“ื“ื•ืช. ืขื‘ื•ืจ C++, ื”ื“ื™ื•ืง ืฉืœ ื ื™ืชื•ื— ื›ื™ื ื•ื™ ืžื‘ื•ืกืก ื˜ื™ืคื•ืก ืฉื•ืคืจ.
  • ืื•ืคื˜ื™ืžื™ื–ืฆื™ื•ืช ืฉืœ ื–ืžืŸ ืงื™ืฉื•ืจ ืžืฉื•ืคืจื•ืช (LTO). ื ื•ืกืฃ ืงื•ื‘ืฅ ื”ืคืขืœื” ื—ื“ืฉ ืœื–ืจื•ืง ื›ื“ื™ ืœืืคืก ืžื™ื“ืข ืขืœ ืงื‘ืฆื™ ืื•ื‘ื™ื™ืงื˜ ืขื LTO bytecode. ืžืขื‘ืจื™ LTO ืžืงื‘ื™ืœื™ื ืงื•ื‘ืขื™ื ืื•ื˜ื•ืžื˜ื™ืช ืืช ืžืกืคืจ ืžืฉื™ืžื•ืช ื”ื‘ื™ืฆื•ืข ื”ืคื•ืขืœื•ืช ื‘ื•-ื–ืžื ื™ืช, ื•ืื ืœื ื ื™ืชืŸ ืœืงื‘ื•ืข ืื•ืชืŸ, ื”ืฉืชืžืฉ ื‘ืžื™ื“ืข ืขืœ ืžืกืคืจ ืœื™ื‘ื•ืช ื”-CPU ื›ื’ื•ืจื ืžืงื‘ื™ืœื”. ื ื•ืกืคื” ืืช ื”ื™ื›ื•ืœืช ืœื“ื—ื•ืก LTO bytecode ื‘ืืžืฆืขื•ืช ืืœื’ื•ืจื™ืชื zstd.
  • ืฉื•ืคืจ ืžื ื’ื ื•ืŸ ื”ืื•ืคื˜ื™ืžื™ื–ืฆื™ื” ื”ืžื‘ื•ืกืก ืขืœ ืชื•ืฆืื•ืช ืคืจื•ืคื™ืœ ืงื•ื“ (PGO โ€“ Profile-guided Optimization) ืืฉืจ ืžื™ื™ืฆืจ ืงื•ื“ ืื•ืคื˜ื™ืžืœื™ ื™ื•ืชืจ ืขืœ ืกืžืš ื ื™ืชื•ื— ืžืืคื™ื™ื ื™ ื‘ื™ืฆื•ืข ื”ืงื•ื“. ืชื—ื–ื•ืงืช ืคืจื•ืคื™ืœ ืžืฉื•ืคืจืช ื‘ืžื”ืœืš ื”ื™ื“ื•ืจ ื•ื”ืคืจื“ืช ืงื•ื“ ื—ื/ืงืจ. ื“ืจืš ื”ืืคืฉืจื•ืช "-fprofile-valuesยป ื™ื›ื•ืœ ื›ืขืช ืœื ื˜ืจ ืขื“ 4 ืขืจื›ื™ ืคืจื•ืคื™ืœ, ืœืžืฉืœ ืœืฉื™ื—ื•ืช ืขืงื™ืคื•ืช ื•ืœืกืคืง ืžื™ื“ืข ืžื“ื•ื™ืง ื™ื•ืชืจ ืขืœ ื”ืคืจื•ืคื™ืœ.
  • ืžืคืจื˜ ืชื›ื ื•ืช ืžืงื‘ื™ืœ ืžื™ื•ืฉื ืขื‘ื•ืจ ืฉืคื•ืช C, C++ ื•-Fortran OpenACC 2.6, ื”ืžื’ื“ื™ืจ ื›ืœื™ื ืœื”ื•ืจื“ืช ืคืขื•ืœื•ืช ืขืœ GPUs ื•ืžืขื‘ื“ื™ื ืžื™ื•ื—ื“ื™ื ื›ื’ื•ืŸ NVIDIA PTX. ื™ื™ืฉื•ื ื”ืชืงืŸ ื›ืžืขื˜ ื”ื•ืฉืœื ืคืชื— ืืช MP 5.0 (Open Multi-Processing), ื”ืžื’ื“ื™ืจ ืืช ื”-API ื•ืฉื™ื˜ื•ืช ืœื™ื™ืฉื•ื ืฉื™ื˜ื•ืช ืชื›ื ื•ืช ืžืงื‘ื™ืœื•ืช ืขืœ ืžืขืจื›ื•ืช ืžืจื•ื‘ื•ืช ืœื™ื‘ื•ืช ื•ื”ื™ื‘ืจื™ื“ื™ื•ืช (CPU+GPU/DSP) ืขื ื–ื™ื›ืจื•ืŸ ืžืฉื•ืชืฃ ื•ื™ื—ื™ื“ื•ืช ื•ืงื˜ื•ืจื™ื–ืฆื™ื” (SIMD). ื ื•ืกืคื• ืชื›ื•ื ื•ืช ื›ืžื• lastprivate conditionals, ื”ื ื—ื™ื•ืช ืกืจื™ืงื” ื•ืœื•ืœืื”, ื‘ื™ื˜ื•ื™ื™ order and use_device_addr. ืขื‘ื•ืจ OpenMP ื•-OpenACC, ื ื•ืกืคื” ืชืžื™ื›ื” ื‘ืคืขื•ืœื•ืช ื”ื•ืจื“ื” ื‘ืžืขื‘ื“ื™ ื’ืจืคื™ AMD Radeon (GCN) ืžื”ื“ื•ืจ ื”ืจื‘ื™ืขื™ (ืคื™ื’'ื™) ื•-GPU (VEGA 10/VEGA 20).
  • ืขื‘ื•ืจ ืฉืคื•ืช ืžืžืฉืคื—ืช C, ื ื•ืกืคื” ื”ืคื•ื ืงืฆื™ื” "ื’ื™ืฉื”" ื›ื“ื™ ืœืชืืจ ืืช ื”ื’ื™ืฉื” ืฉืœ ื”ืคื•ื ืงืฆื™ื” ืœืื•ื‘ื™ื™ืงื˜ื™ื ื”ืžื•ืขื‘ืจื™ื ื‘ืืžืฆืขื•ืช ื”ืคื ื™ื” ืื• ืžืฆื‘ื™ืข, ื•ื›ื“ื™ ืœืฉื™ื™ืš ืื•ื‘ื™ื™ืงื˜ื™ื ื›ืืœื” ืœืืจื’ื•ืžื ื˜ื™ื ืฉืœืžื™ื ื”ืžื›ื™ืœื™ื ืžื™ื“ืข ืขืœ ื’ื•ื“ืœ ื”ืื•ื‘ื™ื™ืงื˜ื™ื. ื›ื“ื™ ืœืขื‘ื•ื“ ื‘ืฉื™ืœื•ื‘ ืขื "ื’ื™ืฉื”", ืชื›ื•ื ืช "ืกื•ื’" ืžื™ื•ืฉืžืช ื›ื“ื™ ืœื–ื”ื•ืช ื’ื™ืฉื” ืฉื’ื•ื™ื” ืžืคื•ื ืงืฆื™ื•ืช ืžืฉืชืžืฉ, ืœืžืฉืœ, ื‘ืขืช ื›ืชื™ื‘ืช ืขืจื›ื™ื ืœืื–ื•ืจ ืžื—ื•ืฅ ืœื’ื‘ื•ืœื•ืช ื”ืžืขืจืš. ื ื•ืกืคื” ื’ื ื”ืชื›ื•ื ื” "symver" ืœืฉื™ื•ืš ืกืžืœื™ื ื‘ืงื•ื‘ืฅ ELF ืœืžืกืคืจื™ ื’ืจืกืื•ืช ืกืคืฆื™ืคื™ื™ื.
  • ืื–ื”ืจื•ืช ื—ื“ืฉื•ืช ื ื•ืกืคื•:
    • "-Wstring-compare" (ืžื•ืคืขืœ ืขื "-Wextra") - ืžืชืจื™ืข ืขืœ ื ื•ื›ื—ื•ืชื ืฉืœ ื‘ื™ื˜ื•ื™ื™ื ืฉื‘ื”ื ืืคืก ืžื•ืฉื•ื•ื” ืœืชื•ืฆืื” ืฉืœ ืงืจื™ืื” ืœืคื•ื ืงืฆื™ื•ืช strcmp ื•-strncmp, ื”ืžืงื‘ื™ืœื” ืœืงื‘ื•ืข ื‘ืฉืœ ื”ืขื•ื‘ื“ื” ืฉื”ืื•ืจืš ืฉืœ ืืจื’ื•ืžื ื˜ ืื—ื“ ื’ื“ื•ืœ ืžื’ื•ื“ืœ ื”ืžืขืจืš ื‘ืืจื’ื•ืžื ื˜ ื”ืฉื ื™.
    • "-Wzero-length-bounds" (ืžื•ืคืขืœ ืขื "-Warray-bounds") - ืžืชืจื™ืข ืขืœ ื’ื™ืฉื” ืœืจื›ื™ื‘ื™ ืžืขืจืš ื‘ืื•ืจืš ืืคืก, ืžื” ืฉืขืœื•ืœ ืœื”ื•ื‘ื™ืœ ืœื”ื—ืœืคืช ื ืชื•ื ื™ื ืื—ืจื™ื.
    • ื”ืื–ื”ืจื•ืช "-Warray-bounds", "-Wformat-overflow", "-Wrestrict", "-Wreturn-local-addr" ื•-"-Wstringop-overflow" ื”ื•ืจื—ื‘ื• ื›ื“ื™ ืœื”ืจื—ื™ื‘ ืืช ืžืกืคืจ ื”ืžืฆื‘ื™ื ืžื—ื•ืฅ ืœืชื—ื•ื. ืฉืžื˜ื•ืคืœื™ื.
  • ื”ื˜ืžื™ืข ืืช ื”ื™ื›ื•ืœืช ืœืฆื™ื™ืŸ ื™ืฉื™ืจื•ืช ืชื•ื•ื™ื ืจื—ื‘ื™ื ื‘ืžื–ื”ื™ื ื‘ืืžืฆืขื•ืช ื”ืงื™ื“ื•ื“ ื”ื ื•ื›ื—ื™ (UTF-8 ื›ื‘ืจื™ืจืช ืžื—ื“ืœ) ื‘ืžืงื•ื ืกื™ืžื•ืŸ UCN (\uNNNN ืื• \UNNNNNNNNN). ืœื“ื•ื’ืžื”:

    ืกื˜ื˜ื™ const int ฯ€ = 3;
    int get_naรฏve_pi() {
    ื”ื—ื–ืจ ฯ€;
    }

  • ืขื‘ื•ืจ ืฉืคืช C, ื—ืœืง ืžื”ืชื›ื•ื ื•ืช ื”ื—ื“ืฉื•ืช ืฉืคื•ืชื—ื• ื‘ืžืกื’ืจืช ืชืงืŸ C2X ื™ื•ืฉืžื• (ืžื•ืคืขืœ ืขืœ ื™ื“ื™ ืฆื™ื•ืŸ -std=c2x ื•-std=gnu2x): ื”ื•ืคื™ืขื” ืชืžื™ื›ื” ื‘ืชื—ื‘ื™ืจ "[[]]" ืœื”ื’ื“ืจืช ืชื›ื•ื ื•ืช ื›ืžื• ื‘ C++ (ืœื“ื•ื’ืžื”, [[gnu ::const]], [[ื”ื•ืฆื ืžืฉื™ืžื•ืฉ]], [[fallthrough]] ื•-[[ืžืybe_unused]]. ื ื•ืกืคื” ืชืžื™ื›ื” ื‘ืชื—ื‘ื™ืจ "u8" ืœื”ื’ื“ืจืช ืงื‘ื•ืขื™ื ืขื ืชื•ื•ื™ UTF-8.
    ื ื•ืกืคื• ืคืงื•ื“ื•ืช ืžืืงืจื• ื—ื“ืฉื•ืช ืœ . ื”ื•ืกื™ืคื• ืชื—ืœื™ืคื™ "%OB" ื•-"%Ob" ืœ-strftime.

  • ืžืฆื‘ ื‘ืจื™ืจืช ื”ืžื—ื“ืœ ืขื‘ื•ืจ C ื”ื•ื "-fno-common", ื”ืžืืคืฉืจ ื’ื™ืฉื” ื™ืขื™ืœื” ื™ื•ืชืจ ืœืžืฉืชื ื™ื ื’ืœื•ื‘ืœื™ื™ื ื‘ืคืœื˜ืคื•ืจืžื•ืช ืžืกื•ื™ืžื•ืช.
  • ืขื‘ื•ืจ C++, ื”ื•ื˜ืžืขื• ื›-16 ืฉื™ื ื•ื™ื™ื ื•ื—ื™ื“ื•ืฉื™ื, ืฉืคื•ืชื—ื• ื‘ืชืงืŸ C++20. ื›ื•ืœืœ ืžื™ืœืช ื”ืžืคืชื— ื”ื ื•ืกืคืช "constinit"
    ื•ืชืžื™ื›ื” ื‘ื”ืจื—ื‘ื•ืช ืชื‘ื ื™ื•ืช ื™ื•ืฉืžื” "ืžื•ืฉื’ื™ื". ืžื•ืฉื’ื™ื ืžืืคืฉืจื™ื ืœืš ืœื”ื’ื“ื™ืจ ืงื‘ื•ืฆื” ืฉืœ ื“ืจื™ืฉื•ืช ืคืจืžื˜ืจื™ื ืฉืœ ืชื‘ื ื™ืช, ืฉื‘ื–ืžืŸ ื”ืงื•ืžืคื™ืœืฆื™ื”, ืžื’ื‘ื™ืœื•ืช ืืช ืงื‘ื•ืฆืช ื”ืืจื’ื•ืžื ื˜ื™ื ืฉื ื™ืชืŸ ืœืงื‘ืœ ื›ืคืจืžื˜ืจื™ื ืฉืœ ืชื‘ื ื™ืช. ื ื™ืชืŸ ืœื”ืฉืชืžืฉ ื‘ืžื•ืฉื’ื™ื ื›ื“ื™ ืœืžื ื•ืข ื—ื•ืกืจ ืขืงื‘ื™ื•ืช ืœื•ื’ื™ืช ื‘ื™ืŸ ื”ืžืืคื™ื™ื ื™ื ืฉืœ ืกื•ื’ื™ ื”ื ืชื•ื ื™ื ื”ืžืฉืžืฉื™ื ื‘ืชื•ืš ื”ืชื‘ื ื™ืช ืœื‘ื™ืŸ ืžืืคื™ื™ื ื™ ืกื•ื’ ื”ื ืชื•ื ื™ื ืฉืœ ืคืจืžื˜ืจื™ ื”ืงืœื˜.

  • G++ ืžืกืคืง ื–ื™ื”ื•ื™ ืฉืœ ื”ืชื ื”ื’ื•ืช ืœื ืžื•ื’ื“ืจืช ื”ื ื’ืจืžืช ืขืœ ื™ื“ื™ ืฉื™ื ื•ื™ ืื•ื‘ื™ื™ืงื˜ื™ื ืงื‘ื•ืขื™ื ื‘ืืžืฆืขื•ืช constexpr. ืฆืจื™ื›ืช ื–ื™ื›ืจื•ืŸ ืžื•ืคื—ืชืช ืขืœ ื™ื“ื™ ื”ืžื”ื“ืจ ื‘ืขืช ื—ื™ืฉื•ื‘ constexpr. ื ื•ืกืคื• ืื–ื”ืจื•ืช ื—ื“ืฉื•ืช "-Wmismatched-tags" ื•-"-Wredundant-tags".
  • ืืคืฉืจื•ื™ื•ืช ืฉื•ืจืช ืคืงื•ื“ื” ื—ื“ืฉื•ืช ื”ื•ืฆืขื•:
    • "-fallocation-dce" ื›ื“ื™ ืœื”ืกื™ืจ ื–ื•ื’ื•ืช ืžื™ื•ืชืจื™ื ืฉืœ ืื•ืคืจื˜ื•ืจื™ื "ื—ื“ืฉื™ื" ื•"ืžื—ืง".
    • "-fprofile-partial-training" ื›ื“ื™ ืœื”ืฉื‘ื™ืช ืื•ืคื˜ื™ืžื™ื–ืฆื™ื” ืฉืœ ื’ื•ื“ืœ ืขื‘ื•ืจ ืงื•ื“ ืฉืื™ืŸ ืœื• ืจื™ืฆืช ืื™ืžื•ืŸ.
    • "-fprofile-reproducible ื›ื“ื™ ืœืฉืœื•ื˜ ื‘ืจืžืช ืฉื—ื–ื•ืจ ื”ืคืจื•ืคื™ืœ.
    • "-fprofile-prefix-path" ื›ื“ื™ ืœื”ื’ื“ื™ืจ ืืช ืกืคืจื™ื™ืช ื‘ื ื™ื™ืช ื”ืžืงื•ืจ ื”ื‘ืกื™ืกื™ืช ื”ืžืฉืžืฉืช ืœื™ืฆื™ืจืช ืคืจื•ืคื™ืœ ื ืคืจื“ (ืขื‘ื•ืจ "-fprofile-generate=profile_dir" ื•-"-fprofile-use=profile_dir").
  • ื‘ื˜ืงืกื˜ ื”ืื–ื”ืจื” ืœืืคืฉืจื•ื™ื•ืช ื”ืžื•ื–ื›ืจื•ืช, ืžืกื•ืคืงื™ื ื”ื™ืคืจ-ืงื™ืฉื•ืจื™ื ื”ืžืืคืฉืจื™ื ืœืš ืœืขื‘ื•ืจ ืœืชื™ืขื•ื“ ืœืืคืฉืจื•ื™ื•ืช ืืœื•. ื”ื—ืœืคืช ื›ืชื•ื‘ืช ื”ืืชืจ ื ืฉืœื˜ืช ื‘ืืžืฆืขื•ืช ื”ืืคืฉืจื•ืช "-fdiagnostics-urls".
  • ื ื•ืกืฃ ืžืคืขื™ืœ ืงื“ื-ืžืขื‘ื“ "__ื™ืฉ_ื‘ื ื”", ืฉื‘ื• ื ื™ืชืŸ ืœื”ืฉืชืžืฉ ื›ื“ื™ ืœื‘ื“ื•ืง ืื ื™ืฉ ืคื•ื ืงืฆื™ื•ืช ืžื•ื‘ื ื•ืช.
  • ื ื•ืกืคื” ืคื•ื ืงืฆื™ื” ืžื•ื‘ื ื™ืช ื—ื“ืฉื” "__builtin_roundeven" ืขื ื™ื™ืฉื•ื ืฉืœ ืคื•ื ืงืฆื™ื™ืช ื”ืขื™ื’ื•ืœ ื”ืžื•ื’ื“ืจืช ื‘ืžืคืจื˜ ISO/IEC TS 18661, ื‘ื“ื•ืžื” ืœ"ืขื’ื•ืœ", ืืš ืขื™ื’ื•ืœ ื—ืœืง ื’ื“ื•ืœ ืž-0.5 ืœืžืขืœื” (ืœืขืจืš ื’ื“ื•ืœ ื™ื•ืชืจ), ืคื—ื•ืช ืž-0.5 - ืœืžื˜ื” (ืœืืคืก), ื•ืฉื•ื•ื” ืœ-0.5 - ื”ื—ืœ ืžื”ืฉื•ื•ื™ื•ืŸ ืฉืœ ื”ืกืคืจื” ื”ืœืคื ื™ ืื—ืจื•ื ื”.
  • ืขื‘ื•ืจ ืืจื›ื™ื˜ืงื˜ื•ืจืช AArch64, ื ื•ืกืคื” ืชืžื™ื›ื” ื‘ื”ืจื—ื‘ื” SVE2 ื•ืฉื•ืคืจื” ื”ืชืžื™ื›ื” ื‘-SVE (Scalable Vector Extension), ื›ื•ืœืœ ืชื•ืกืคืช ืชืžื™ื›ื” ื‘ืคื•ื ืงืฆื™ื•ืช ื•ืกื•ื’ื™ SVE ACLE ืžื•ื‘ื ื™ื, ื•ืฉื™ืžื•ืฉ ื‘ื•ืงื˜ื•ืจื™ื–ืฆื™ื”. ื”ืชืžื™ื›ื” ื‘-LSE (ื”ืจื—ื‘ื•ืช ืžืขืจื›ืช ื’ื“ื•ืœื•ืช) ื•ื‘-TME (ื”ืจื—ื‘ืช ื–ื™ื›ืจื•ืŸ ืขืกืงื”) ื”ื•ืจื—ื‘ื”. ื ื•ืกืคื• ื”ื•ืจืื•ืช ื—ื“ืฉื•ืช ื”ืžื•ืฆืขื•ืช ื‘-Armv8.5-A ื•-Armv8.6-A, ื›ื•ืœืœ ื”ื•ืจืื•ืช ืœื™ืฆื™ืจืช ืžืกืคืจื™ื ืืงืจืื™, ืขื™ื’ื•ืœ, ืงืฉื™ืจืช ืชื’ื™ ื–ื™ื›ืจื•ืŸ,
    bfloat16 ื•ื›ืคืœ ืžื˜ืจื™ืฆื”. ื ื•ืกืคื” ืชืžื™ื›ื” ื‘ืžืขื‘ื“
    Arm Cortex-A77,
    Arm Cortex-A76AE,
    Arm Cortex-A65,
    Arm Cortex-A65AE,
    Arm Cortex-A34 ื•
    Marvell ThunderX3.

  • ื ื•ืกืคื” ืชืžื™ื›ื” ืขื‘ื•ืจ ABI FDPIC (ืžืฆื‘ื™ืขื™ ืคื•ื ืงืฆื™ื•ืช ืฉืœ 32 ืกื™ื‘ื™ื•ืช) ืขื‘ื•ืจ ARM64. ืขื™ื‘ื•ื“ ืžื—ื•ื“ืฉ ื•ืžื•ื˜ื‘ ืฉืœ ืคืขื•ืœื•ืช ืฉืœ 64 ืกื™ื‘ื™ื•ืช. ื ื•ืกืคื” ืชืžื™ื›ื” ื‘ืžืขื‘ื“
    Arm Cortex-A77,
    Arm Cortex-A76AE ื•
    Arm Cortex-M35P. ืชืžื™ื›ื” ืžื•ืจื—ื‘ืช ืขื‘ื•ืจ ื”ื•ืจืื•ืช ืขื™ื‘ื•ื“ ื ืชื•ื ื™ื ืฉืœ ACLE, ื›ื•ืœืœ SIMD ืฉืœ 32 ืกื™ื‘ื™ื•ืช, ื›ืคืœ 16 ืกื™ื‘ื™ื•ืช, ืืจื™ืชืžื˜ื™ืงื” ืฉืœ ืชืคืก ื•ืื•ืคื˜ื™ืžื™ื–ืฆื™ื•ืช ืื—ืจื•ืช ืฉืœ ืืœื’ื•ืจื™ืชืžื™ DSP. ื ื•ืกืคื” ืชืžื™ื›ื” ื ื™ืกื™ื•ื ื™ืช ืขื‘ื•ืจ ื”ื•ืจืื•ืช ACLE CDE (Custom Datapath Extension).

  • ืฉื™ืคื•ืจ ืžืฉืžืขื•ืชื™ ื‘ื™ืฆื™ืจืช ืงื•ื“ ื•ื‘ื•ืงื˜ื•ืจื™ื–ืฆื™ื” ื‘-backend ืขื‘ื•ืจ GPUs ืฉืœ AMD ื”ืžื‘ื•ืกืกื™ื ืขืœ ื”ืžื™ืงืจื•-ืืจื›ื™ื˜ืงื˜ื•ืจื” ืฉืœ GCN.
  • ื ื•ืกืคื” ืชืžื™ื›ื” ื‘ืžื›ืฉื™ืจื™ื ื“ืžื•ื™ื™ XMEGA ืขื‘ื•ืจ ืืจื›ื™ื˜ืงื˜ื•ืจืช AVR
    ATtiny202, ATtiny204, ATtiny402, ATtiny404, ATtiny406, ATtiny804, ATtiny806, ATtiny807, ATtiny1604, ATtiny1606, ATtiny1607, ATmega808ga, ATmega809, ATmega1608 1609, ATmega3208, ATmega3209 4808, ATmega4809 ื•-ATmegaXNUMX.

  • ื”ืจื—ื‘ืช ืืจื›ื™ื˜ืงื˜ื•ืจืช ืกื˜ ื”ื•ืจืื•ืช ื—ื“ืฉื” ืฉืœ Intel ENQCMD (-menqcmd) ื ื•ืกืคื” ืขื‘ื•ืจ ืืจื›ื™ื˜ืงื˜ื•ืจื•ืช IA-32/x86-64. ื ื•ืกืคื” ืชืžื™ื›ื” ืขื‘ื•ืจ ืื™ื ื˜ืœ ืงื•ืคืจืœื™ื™ืง (-march=cooperlake, ื›ื•ืœืœ ืืช ื”ืจื—ื‘ืช AVX512BF16 ISA) ื•-Tigerlake (-march=tigerlake, ื›ื•ืœืœ ื”ืจื—ื‘ื•ืช MOVDIRI, MOVDIR64B ื•-AVX512VP2INTERSECT ISA).
  • ื™ื™ืฉื•ื ืฉืœ HSAIL (ืฉืคืช ื‘ื™ื ื™ื™ื ืฉืœ ืืจื›ื™ื˜ืงื˜ื•ืจืช ืžืขืจื›ืช ื”ื˜ืจื•ื’ื ื™ืช) ืขื‘ื•ืจ ืžืขืจื›ื•ืช ืžื—ืฉื•ื‘ ื”ื˜ืจื•ื’ื ื™ื•ืช ื”ืžื‘ื•ืกืกื•ืช ืขืœ ืืจื›ื™ื˜ืงื˜ื•ืจืช HSA ื”ื•ืฆื ืžืฉื™ืžื•ืฉ ื•ื›ื›ืœ ื”ื ืจืื” ื™ื•ืกืจ ื‘ืžื”ื“ื•ืจื” ืขืชื™ื“ื™ืช.

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

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