Mwepụta nke GCC 12 compiler suite

Mgbe otu afọ nke mmepe gasịrị, a tọhapụrụ free compiler suite GCC 12.1, ntọhapụ mbụ dị ịrịba ama na ngalaba GCC 12.x ọhụrụ. N'ikwekọ n'atụmatụ nọmba ntọhapụ ọhụrụ ahụ, a na-eji ụdị 12.0 mee ihe na usoro mmepe, na obere oge tupu mwepụta nke GCC 12.1, alaka GCC 13.0 ewepụtalarị alaka ụlọ ọrụ, na ndabere nke ntọhapụ na-esote, GCC 13.1, ga-esi na ya pụta. a ga-akpụ. Na May 23, ọrụ a ga-eme ememe afọ 35 kemgbe e guzobere mbipụta mbụ nke GCC.

Isi mgbanwe:

  • Nkwado agbakwunyere maka usoro nbibi nke CTF (Compact Type Format), nke na-enye kọmpat nchekwa ozi gbasara ụdị C, njikọ n'etiti ọrụ na akara ngosi. Mgbe etinyere n'ime ihe ELF, usoro a na-enye ohere iji tebụl agwa EFL zere mbịgharị data.
  • Nkwado maka usoro nchekwa ozi nbipu "STABS", emebere na 1980s, emebiela.
  • Ọrụ na-aga n'ihu ịgbasa nkwado maka ụkpụrụ C2X na C++ 23 n'ọdịnihu maka asụsụ C na C++. Dịka ọmụmaatụ, agbakwunyela nkwado maka okwu "ọ bụrụ consteval"; ekwe ka iji akpaaka na arụmụka ọrụ ("f(auto(g()))"); A na-anabata iji mgbanwe ndị na-abụghị nke nkịtị, goto na labels na ọrụ ekwuputara dị ka constexpr; nkwado agbakwunyere maka ndị na-arụ ọrụ index multidimensional[]; ma ọ bụrụ na, maka na ịgbanwee, agbasawanye ike nke ngọngọ mmalite ("maka (iji T = int; T e : v)").
  • Ọbá akwụkwọ ọkọlọtọ C++ emelitela nkwado maka ngalaba nnwale nke ụkpụrụ C++20 na C++23. Nkwado agbakwunyere maka std :: move_only_function, , std :: basic_string :: size_and_overwrite, , na std:: ịkpọku_r. Enyere ohere iji std :: special_ptr, std :: vector, std :: base_string, std :: nhọrọ na std :: variant na constexpr ọrụ.
  • Forran frontend na-enye nkwado zuru oke maka nkọwapụta TS 29113, nke na-akọwa ikike iji hụ na mbugharị n'etiti koodu Fortran na C.
  • Nkwado agbakwunyere maka __builtin_shufflevector(vec1, vec2, index1, index2, ...) agbakwunyere na Clang na mbụ, nke na-enye otu oku iji rụọ ọrụ vector shuffle na shuffle nkịtị.
  • Mgbe ị na-eji ọkwa njikarịcha "-O2", a na-akwado vectorization site na ndabara (-ftree-vectorize na -fvect-cost-model=ụdị dị ọnụ ala na-akwado). Ụdị dị ọnụ ala dị ọnụ ala na-enye ohere ịme vectorization naanị ma ọ bụrụ na koodu vector nwere ike dochie koodu scalar kpamkpam na-eme vectorized.
  • Agbakwunyere "-ftrivial-auto-var-init" mode iji mee ka mmalite mmalite nke mgbanwe dị n'elu ikpo okwu iji soro okwu na igbochi adịghị ike jikọtara na iji mgbanwe mgbanwe na-enweghị mmalite.
  • Maka asụsụ C na C++, agbakwunyere arụrụ arụ arụrụ arụ __builtin_dynamic_object_size iji chọpụta nha ihe, dakọtara na ọrụ yiri nke Clang.
  • Maka asụsụ C na C++, agbakwunyela nkwado maka njirimara "adịghị adị" (dịka ọmụmaatụ, ị nwere ike kaa ọrụ ndị ga-emepụta njehie ma ọ bụrụ na ị gbalịrị iji ha).
  • Maka asụsụ C na C++, agbakwunyela nkwado maka ntuziaka nhazi "#elifdef" na "#elifndef".
  • Agbakwunyere ọkọlọtọ "-Wbidi-chars" iji gosipụta ịdọ aka ná ntị ma ọ bụrụ na ejiri mkpụrụedemede UTF-8 na-ezighi ezi, na-agbanwe usoro a na-egosi ederede bidirectional.
  • Agbakwunyere ọkọlọtọ "-Warray-compare" iji dọọ aka ná ntị mgbe ị na-agbalị ịtụnyere operand abụọ na-ezo aka n'usoro.
  • Mmejuputa ụkpụrụ OpenMP 5.0 na 5.1 (Open Multi-Processing), nke na-akọwa API na ụzọ maka itinye usoro mmemme yiri ya na sistemụ multi-core na ngwakọ (CPU+ GPU/DSP) yana ebe nchekwa na mpaghara vectorization (SIMD). , aga n'ihu.
  • Mmelite nke ọma na nkọwapụta mmemme mmemme OpenACC 2.6, nke na-akọwapụta ngwaọrụ maka ibugharị ọrụ na GPU na ndị nrụpụta pụrụ iche dị ka NVIDIA PTX.
  • Nkwado maka ntuziaka agbatịkwuru Intel AVX86-FP512 na ụdị _Float16 agbakwunyere na nkwado ọgbọ koodu maka ihe owuwu x16.
  • Maka ihe owuwu x86, agbakwunyela nchebe megide adịghị ike na ndị nrụpụta ihe kpatara site na mkpochapụ nke ntuziaka ka arụchara ọrụ mbuli na-enweghị atụ. Nsogbu a na-eme n'ihi nhazi nhazi nke ntuziaka ozugbo na-eso ntuziaka alaka ụlọ ọrụ na ebe nchekwa (SLS, Straight Line Speculation). Iji mee ka nchedo, a na-atụpụta nhọrọ "-mharden-sls".
  • Nchọpụta agbakwunyere nke iji mgbanwe ndị na-ebidobeghị na nyocha static nyocha. agbakwunyere nkwado izizi maka nyocha koodu mgbakọ na ntinye inline. Nlebanya ebe nchekwa emelitere. Edegharịala koodu maka nhazi okwu ngbanwe.
  • Agbakwunyere oku ọhụrụ 30 na libgccjit, ọbá akwụkwọ ekekọrịtara maka itinye onye na-emepụta koodu n'ime usoro ndị ọzọ yana iji ya JIT chịkọta bytecode n'ime koodu igwe.
  • Nkwado maka usoro CO-RE (Compile Once - Run Everywhere) agbakwunyere na azụ azụ maka ịmepụta BPF bytecode, nke na-enye gị ohere ikpokọta koodu nke mmemme eBPF maka Linux kernel naanị otu ugboro ma jiri ihe mkpuchi zuru ụwa ọnụ pụrụ iche nke na-emegharị ya. kwajuru mmemme na kernel ugbu a yana Ụdị Ụdị BPF). CO-RE na-edozi nsogbu nke ngwa ngwa nke mmemme eBPF chịkọtara, nke enwere ike iji naanị na ụdị kernel nke ejiri chịkọta ha, ebe ọ bụ na ọnọdụ nke ihe dị na nhazi data na-agbanwe site na ụdị gaa na ụdị.
  • RISC-V backend na-agbakwụnye nkwado maka ntụziaka ọhụrụ setịpụ ụkpụrụ ụlọ zba, zbb, zbc na zbs, yana mgbakwunye ISA maka vector na scalar cryptographic arụmọrụ. Site na ndabara, a na-enye nkwado maka nkọwapụta RISC-V ISA 20191213. Agbakwunyela ọkọlọtọ -mtune=thead-c906 iji mee ka nkwalite maka T-HEAD c906 cores.
  • agbakwunyere nkwado maka ụdị __int128_t/integer(ụdị=16) na koodu ọgbọ nkwado maka AMD GPU dabere na GCN microarchitecture. Ọ ga-ekwe omume iji ihe ruru 40 ọrụ otu n'otu mgbakọ (CU) na ruo 16 ntụziaka ihu (wavefront, a set nke eri gburu n'otu n'otu site SIMD Engine) kwa otu. Na mbụ, naanị otu ọnụ ntụziaka kwa CU ka anabatara.
  • NVPTX azụ azụ, nke e mere iji mepụta koodu site na iji NVIDIA PTX (Parallel Thread Execution) ntụziaka setịpụrụ ụkpụrụ, agbakwunyela ikike iji ọkọlọtọ "-march", "-mptx" na "-march-map". Nkwado etinyere maka PTX ISA sm_53, sm_70, sm_75 na sm_80. Nrụpụta nke ndabara bụ sm_30.
  • Edeghachila mmejuputa ọrụ arụnyere na azụ azụ maka ndị nrụpụta PowerPC/PowerPC64/RS6000. Arụ ọrụ arụnyere __builtin_get_texasr, __builtin_get_texasru, __builtin_get_tfhar, __builtin_get_tfiar, __builtin_set_texasr, __builtin_set_texasr, __builtin_set_tfhar na __builtin_t.
  • Nkwado maka Arm Ampere-64 (-mcpu/-mtune ampere1), Arm Cortex-A1 (cortex-a510), Arm Cortex-A510 (cortex-a710) na Arm Cortex-X710 (cortex- x2). Nkwado agbakwunyere maka nhọrọ nhazi ụlọ ARMv2 ọhụrụ maka ojiji yana nhọrọ "-march": armv8-a, armv8.7-a, armv8.8-a. Agbakwunyere mmejuputa ọrụ C arụnyere n'ime mkpokọta (Intrinsics) maka ntinye atomic na ịchekwa data n'ime ebe nchekwa, dabere na iji ntuziaka ARM agbatịkwuru (ls9). Nkwado agbakwunyere maka ịkwalite ọrụ memcpy, memmove na memset site na iji ndọtị ARM mopsoption.
  • Agbakwunyere ọnọdụ nlele ọhụrụ "-fsanitize=shadow-call-stack" (ShadowCallStack), nke dị ugbu a naanị maka nhazi ụlọ AArch64 ma na-arụ ọrụ mgbe koodu na-eji nhọrọ "-ffixed-r18". Ụdị ahụ na-enye nchebe pụọ na idegharị adreesị nloghachi site na ọrụ ma ọ bụrụ na ihe nchekwa na-ejupụta na tojupụtara. Ihe dị mkpa nke nchebe bụ ịchekwa adreesị nloghachi na nchịkọta "onyinyo" dị iche iche mgbe ị na-ebufe njikwa na ọrụ ma weghachite adreesị a tupu ịpụ na ọrụ ahụ.

isi: opennet.ru

Tinye a comment