Hoʻokuʻu ʻia ka GCC 10 compiler suite

Ma hope o hoʻokahi makahiki o ka hoʻomohala ʻana i paʻiʻia hoʻokuʻu ʻana i kahi pūʻulu manuahi o nā mea hoʻohui GCC 10.1, ka hoʻokuʻu nui mua ma ka lālā GCC 10.x hou. I kulike ai me hoʻolālā hou Ua hoʻohana ʻia nā helu hoʻokuʻu, version 10.0 i ka wā o ka hoʻomohala ʻana, a ma mua koke o ka hoʻokuʻu ʻia ʻana o GCC 10.1, ua hoʻomaka mua ka lālā GCC 11.0, ma ke kumu e hoʻokumu ʻia ai ka hoʻokuʻu nui hou, GCC 11.1.

He mea kaulana ʻo GCC 10.1 no ka hoʻokō ʻana i nā mea hou i ka ʻōlelo C++ i hoʻomohala ʻia no ka maʻamau C++20, nā hoʻomaikaʻi e pili ana i ka maʻamau ʻōlelo C e hiki mai ana (C2x), nā hoʻoponopono hou i nā backends compiler a me ke kākoʻo hoʻokolohua. ʻano hoʻopaʻa ʻana. Eia kekahi, i ka hoʻomākaukau ʻana i kahi lālā hou, ua hoʻoneʻe ka papahana i ka waihona mai SVN a i Git.

ka papa kuhikuhiE ke hoʻololi:

  • Hoʻohui ʻia ʻano hoʻokolohua o ka nānā ʻana paʻa "-fanalyzer", e hana ana i ka loiloi interprocedural koʻikoʻi waiwai o nā ala hoʻokō code a me nā kahe ʻikepili i kahi papahana. Hiki i ke ʻano ke ʻike i nā pilikia ma ka pae hoʻohui, e like me nā kelepona ʻelua i ka hana manuahi () no ka wahi hoʻomanaʻo hoʻokahi, nā leaks descriptor file, dereferencing a me ka hala ʻana i nā kuhikuhi null, ke komo ʻana i nā poloka hoʻomanaʻo manuahi, me ka hoʻohana ʻana i nā waiwai uninitialized, etc. ʻO ka hoʻohana ʻana i ke ʻano hou no OpenSSL code ua hiki ke ʻike pilikia pilikia.
  • Hoʻomaikaʻi ʻia nā loiloi interprocedural. Ua hoʻolālā hou ʻia ka pass IPA-SRA (Interprocedural Scalar Shared Replacement) e hana i ka manawa hoʻopaʻa a, ma waena o nā mea ʻē aʻe, wehe i kēia manawa i nā waiwai i hoʻohana ʻole ʻia. Ma ke ʻano hoʻolālā "-O2", hiki ke koho "-finline-functions", i hoʻihoʻi ʻia e makemake i nā code paʻakikī ma mua o ka hana hoʻokō. Ua hoʻokē ʻia ka hana o ka heuristic no ka hoʻolaha ʻana i ka hana inline. Hiki ke hoʻohana i ka ʻike e pili ana i nā pae waiwai no ka wānana ʻana i ka pono o nā hoʻololi kanaka. No C ++, ua hoʻomaikaʻi ʻia ka pololei o ka parsing alias hoʻokumu ʻia.
  • Hoʻonui ʻia ka hoʻopili ʻana i ka manawa (LTO). Hoʻohui ʻia nā mea hoʻokō hou lto-hoolei e hoʻihoʻi hou i ka ʻike e pili ana i nā faila mea me LTO bytecode. Hoʻoholo maʻalahi ka LTO paʻa i ka helu o nā hana hana i ka manawa like a, inā ʻaʻole hiki ke hoʻoholo ʻia, e hoʻohana i ka ʻike e pili ana i ka helu o nā cores CPU ma ke ʻano he kumu hoʻohālikelike. Hoʻohui i ka hiki ke hoʻopaʻa i ka LTO bytecode me ka hoʻohana ʻana i ka zstd algorithm.
  • Ua hoʻomaikaʻi ʻia ka mīkini hoʻoponopono e pili ana i nā hopena o ka code profiling (PGO - Profile-guided optimization), kahi e hoʻopuka ai i nā code ʻoi aku ka maikaʻi ma muli o ka nānā ʻana i nā ʻano o ka hoʻokō code. Hoʻomaikaʻi ʻia ka mālama ʻana i ka moʻolelo i ka wā o ka hui ʻana a me ka hoʻokaʻawale code wela/anu. Via ke koho "-fprofile-waiwai» hiki iā ia ke nānā a hiki i 4 koʻikoʻi koʻikoʻi, no ka laʻana no nā kelepona ʻole a me ka hāʻawi ʻana i ka ʻike kikoʻī pololei.
  • Hoʻokō ʻia ka ʻōlelo kikoʻī hoʻolālā parallel no nā ʻōlelo C, C++ a me Fortran OpenACC 2.6, e wehewehe ana i nā mea hana no ka hoʻokuʻu ʻana i nā hana ma nā GPU a me nā mea hana kūikawā e like me NVIDIA PTX. ʻaneʻane pau ka hoʻokō ʻana i ka maʻamau E wehe i ka MP 5.0 (Open Multi-Processing), ka mea i wehewehe i ka API a me nā ʻano o ka hoʻohana ʻana i nā ʻano papahana like ʻole ma nā ʻōnaehana multi-core a hybrid (CPU+GPU/DSP) me ka hoʻomanaʻo like ʻana a me nā ʻāpana vectorization (SIMD). Hoʻohui ʻia nā hiʻohiʻona e like me nā kūlana pilikino hope loa, nā kuhikuhi scan a me ka loop, kauoha a hoʻohana i nā ʻōlelo_device_addr. No OpenMP a me OpenACC, ua hoʻohui ʻia ke kākoʻo no ka hoʻokuʻu ʻana i nā hana ma nā hanauna ʻehā (Fiji) a me ka ʻelima mau hanauna AMD Radeon (GCN) GPU (VEGA 10/VEGA 20).
  • No nā ʻōlelo o ka ʻohana C, ua hoʻohui ʻia ka hana "access" e wehewehe i ke komo ʻana o ka hana i nā mea i hoʻoholo ʻia e ka kuhikuhi a i ʻole ke kuhikuhi ʻana, a e hoʻopili i ia mau mea me nā manaʻo integer i loaʻa ka ʻike e pili ana i ka nui o nā mea. No ka hana pū me ka "access", ua hoʻokō ʻia ke ʻano "type" e ʻike i ke komo hewa ʻana mai nā hana mea hoʻohana, no ka laʻana, ke kākau ʻana i nā waiwai i kahi wahi ma waho o nā palena o ka array. Hoʻohui pū ʻia ke ʻano "symver" e hoʻohui i nā hōʻailona ma kahi faila ELF me nā helu mana kikoʻī.
  • Hoʻohui ʻia nā ʻōlelo aʻo hou:
    • "-Wstring-compare" (hoʻohana ʻia me "-Wextra") - e aʻo e pili ana i ka hele ʻana o nā ʻōlelo i hoʻohālikelike ʻia ai ka zero me ka hopena o ke kāhea ʻana i nā hana strcmp a me strncmp, e like me ka mea mau ma muli o ka lōʻihi. ʻoi aku ka nui o ka hoʻopaʻapaʻa hoʻokahi ma mua o ka nui o ka array ma ka pane ʻelua.
    • "-Wzero-longth-bounds" (ho'ā me "-Warray-bounds") - e aʻo ana e pili ana i ke komo ʻana i nā mea hoʻonohonoho o ka lōʻihi ʻole, hiki ke alakaʻi i ke kākau ʻana i nā ʻikepili ʻē aʻe.
    • Ua hoʻonui ʻia nā ʻōlelo aʻoaʻo "-Warray-bounds", "-Wformat-overflow", "-Wrestrict", "-Wreturn-local-addr" a me "-Wstringop-overflow" e hoʻonui i ka helu o nā kūlana ma waho. i lawelaweia.
  • Hoʻokō i ka hiki ke kuhikuhi pololei i nā huaʻōlelo ākea i nā mea hōʻike me ka hoʻohana ʻana i ka hoʻopili ʻana o kēia manawa (UTF-8 ma ka paʻamau) ma mua o ka hōʻailona UCN (\uNNNN a i ʻole \UNNNNNNNNN). ʻo kahi laʻana:

    static const int π = 3;
    int get_naïve_pi() {
    hoʻihoʻi π;
    }

  • No ka ʻōlelo C, ua hoʻokō ʻia kahi ʻāpana o nā hiʻohiʻona hou i kūkulu ʻia i loko o ka maʻamau C2X (hiki i ka wehewehe ʻana -std=c2x a me -std=gnu2x): ua ʻike ʻia ke kākoʻo no ka "[[]]" syntax no ka wehewehe ʻana i nā ʻano e like me ia. C++ (no ka laʻana, [[gnu ::const]], [[deprecated]], [[fallthrough]] a me [[maybe_unused]]. Hoʻohui i kākoʻo no "u8" syntax no ka wehewehe ʻana i nā mea mau me nā huaʻōlelo UTF-8.
    Hoʻohui i nā macro hou i . Hoʻohui ʻia "%OB" a me "%Ob" i ka strftime.

  • ʻO ke ʻano paʻamau no C ʻo ia ka "-fno-common", e hiki ai ke komo pono i nā mea hoʻololi honua ma kekahi mau paepae.
  • No C++, ma kahi o 16 mau hoʻololi a me nā mea hou i hoʻokō ʻia, hoʻomohala ʻia ma ka maʻamau C++20. Me ka huaʻōlelo i hoʻohui ʻia "consinit"
    a ua hoʻokō ʻia ke kākoʻo no nā hoʻonui template "ka manaʻo". Hāʻawi nā manaʻo iā ʻoe e wehewehe i kahi hoʻonohonoho o nā koi hoʻohālikelike template, i ka manawa hōʻuluʻulu, e kaupalena i ka hoʻonohonoho o nā manaʻo i hiki ke ʻae ʻia e like me nā ʻāpana template. Hiki ke hoʻohana ʻia nā manaʻo no ka pale ʻana i nā ʻano like ʻole ma waena o nā waiwai o nā ʻano ʻikepili i hoʻohana ʻia i loko o ka template a me nā waiwai ʻano ʻikepili o nā ʻāpana hoʻokomo.

  • Hāʻawi ʻo G++ i ka ʻike ʻana i ke ʻano i wehewehe ʻole ʻia ma muli o ka hoʻololi ʻana i nā mea mau ma o constexpr. Hoʻemi ʻia ka hoʻohana ʻana i ka hoʻomanaʻo e ka mea hoʻopili i ka helu ʻana i ka constexpr. Hoʻohui ʻia nā ʻōlelo luhi hou "-Wmismatched-tags" a me "-Wredundant-tags".
  • Ua koho ʻia nā koho laina kauoha hou:
    • "-fallocation-dce" e wehe i nā hui pono ʻole o nā mea hana "hou" a me "holoi".
    • "-fprofile-partial-training" e hoʻopau i ka hoʻonui ʻana i ka nui no ke code ʻaʻohe o ka holo aʻo ʻana.
    • "-fprofile-reproducible e hoʻomalu i ke kiʻekiʻe o ka reproducibility profile.
    • "-fprofile-prefix-path" no ka wehewehe ʻana i ka papa kuhikuhi kumu kumu i hoʻohana ʻia no ka hoʻokaʻawale ʻana o ka ʻikepili (no "-fprofile-generate=profile_dir" a me "-fprofile-use=profile_dir").
  • Ma ka ʻōlelo aʻo no nā koho i ʻōlelo ʻia, hāʻawi ʻia nā hyperlinks e ʻae iā ʻoe e hele i ka palapala no kēia mau koho. Mālama ʻia ka hoʻololi ʻana i ka URL me ka koho "-fdiagnostics-urls".
  • Hoʻohui ʻia ka mea hana preprocessor "__ua_kūkulu", hiki ke hoʻohana ʻia e nānā i nā hana i kūkulu ʻia.
  • Hoʻohui i kahi hana hou i kūkulu ʻia "__builtin_roundeven" me ka hoʻokō ʻana i ka hana pōʻai i wehewehe ʻia ma ka kikoʻī ISO/IEC TS 18661, e like me ka "pōʻai", akā ʻoi aku ka nui o ka pōʻai ma mua o 0.5 i luna (i kahi waiwai nui), emi iho ma mua o 0.5 - iho (i ka zero), a like me 0.5 - e hoʻomaka ana mai ka parity o ka helu penultimate.
  • No ka hoʻolālā AArch64, ua hoʻohui ʻia ke kākoʻo no ka hoʻonui SVE2 a ua hoʻomaikaʻi ʻia ke kākoʻo no SVE (Scalable Vector Extension), me ke kākoʻo hoʻohui no nā hana a me nā ʻano SVE ACLE i kūkulu ʻia, a me ka hoʻohana ʻana i ka vectorization. Ua hoʻonui ʻia ke kākoʻo no LSE (Large System Extensions) a me TME (Transactional Memory Extension). Hoʻohui ʻia nā ʻōlelo aʻo hou i manaʻo ʻia ma Armv8.5-A a me Armv8.6-A, me nā ʻōlelo aʻoaʻo no ka hoʻokumu ʻana i nā helu maʻamau, ka hoʻopuni ʻana, ka hoʻopaʻa ʻana i ka hōʻailona hoʻomanaʻo,
    bfloat16 a me ka hoonui matrix. Hoʻohui ʻia ke kākoʻo ʻōnaehana
    ʻO ka lima Cortex-A77,
    ʻO ka lima Cortex-A76AE,
    ʻO ka lima Cortex-A65,
    ʻO ka lima Cortex-A65AE,
    Arm Cortex-A34 a me
    ʻO Marvell ThunderX3.

  • Hoʻohui ʻia ke kākoʻo no ABI FDPIC (32-bit function pointers) no ARM64. Hoʻolālā hou ʻia a hoʻoponopono ʻia i ka hana ʻana o nā hana integer 64-bit. Pākuʻi kākoʻo CPU
    ʻO ka lima Cortex-A77,
    Arm Cortex-A76AE a me
    ʻO ka lima Cortex-M35P. Kākoʻo i hoʻonui ʻia no nā ʻōlelo aʻoaʻo hoʻoili ʻikepili ACLE, me 32-bit SIMD, 16-bit multiplication, latch arithmetic, a me DSP algorithm optimizations ʻē aʻe. Hoʻohui i ke kākoʻo hoʻokolohua no nā ʻōlelo kuhikuhi ACLE CDE (Custom Datapath Extension).

  • Ua hoʻomaikaʻi maikaʻi ʻia ka hana code a me ka vectorization i ka hope no nā AMD GPU e pili ana i ka microarchitecture GCN.
  • Hoʻohui i ke kākoʻo no nā mea like me XMEGA no ka hoʻolālā AVR
    ATtiny202, ATtiny204, ATtiny402, ATtiny404, ATtiny406, ATtiny804, ATtiny806, ATtiny807, ATtiny1604, ATtiny1606, ATtiny1607, ATmega808, ATmega809, ATmega1608, ATmega1609, ATmega3208 3209, ATmega4808 a me ATmega4809.

  • Ua hoʻohui ʻia kahi hoʻonui hoʻonui hoʻonohonoho hoʻonohonoho hoʻonohonoho Intel ENQCMD hou (-menqcmd) no nā hale hana IA-32/x86-64. Hoʻohui ʻia ke kākoʻo no Intel Cooperlake (-march=cooperlake, me ka hoʻonui ʻia ʻana o AVX512BF16 ISA) a me Tigerlake (-march=tigerlake, me ka MOVDIRI, MOVDIR64B a me AVX512VP2INTERSECT ISA hoʻonui) CPU.
  • ʻO ka hoʻokō ʻana o ka HSAIL (Heterogeneous System Architecture Intermediate Language) no nā ʻōnaehana helu heterogeneous e pili ana i ka hoʻolālā HSA ua hoʻopau ʻia a e hoʻoneʻe ʻia paha i ka wā e hiki mai ana.

Source: opennet.ru

Pākuʻi i ka manaʻo hoʻopuka