Kutulutsidwa kwa GCC 12 compiler suite

Pambuyo pa chaka cha chitukuko, gulu laulere la compiler suite GCC 12.1 latulutsidwa, kumasulidwa koyamba munthambi yatsopano ya GCC 12.x. Mogwirizana ndi ndondomeko yatsopano yowerengera manambala, mtundu wa 12.0 unagwiritsidwa ntchito popanga chitukuko, ndipo posachedwa GCC 12.1 itatulutsidwa, nthambi ya GCC 13.0 inali itayamba kale, pamaziko omwe kumasulidwa kwakukulu kotsatira, GCC 13.1, kukanatha. kupangidwa. Pa Meyi 23, ntchitoyi idzakondwerera zaka 35 kuyambira pomwe GCC idapangidwa.

Zosintha zazikulu:

  • Thandizo lowonjezera la mtundu wa CTF (Compact Type Format), womwe umapereka kusungirako kophatikizana kwa zidziwitso za mitundu ya C, kulumikizana pakati pa magwiridwe antchito ndi zizindikiro zowongolera. Mukaphatikizidwa muzinthu za ELF, mawonekedwewa amalola kugwiritsa ntchito matebulo amtundu wa EFL kupewa kubwereza deta.
  • Thandizo la "STABS" yosungira zidziwitso zosokoneza, yomwe idapangidwa m'ma 1980, idachotsedwa.
  • Ntchito ikupitiriza kukulitsa chithandizo cha C2X ndi C++23 miyezo yamtsogolo ya C ndi C ++. Mwachitsanzo, kuchirikiza mawu akuti β€œngati consteval” aonjezedwa; kuloledwa kugwiritsa ntchito zodziwikiratu pazokangana zantchito (β€œf(auto(g()))”); kugwiritsa ntchito mitundu yosakhala yeniyeni, goto ndi zolemba zimaloledwa muzochita zolengezedwa ngati constexpr; anawonjezera chithandizo cha multidimensional index operators[]; ngati, chifukwa ndi kusintha, kuthekera kwa midadada yoyambira kukulitsidwa ("kwa (kugwiritsa ntchito T = int; T e: v)").
  • C++ Standard Library yathandizira bwino magawo oyesera a C++20 ndi C++23 miyezo. Zowonjezera zothandizira std::move_only_function, , std::basic_string::resize_and_overwrite, , ndi std::invoke_r. Amaloledwa kugwiritsa ntchito std::unique_ptr, std::vector, std::basic_string, std::optional ndi std::zosiyana mu ntchito za constexpr.
  • Kutsogolo kwa Fortran kumapereka chithandizo chokwanira pamafotokozedwe a TS 29113, omwe amafotokoza kuthekera kowonetsetsa kusuntha pakati pa Fortran ndi C code.
  • Chothandizira chowonjezera cha __builtin_shufflevector(vec1, vec2, index1, index2, ...) chomwe chidawonjezedwa kale ku Clang, chomwe chimapereka kuyimba kamodzi kuti agwire ntchito wamba vekitala ndi kusakaniza.
  • Mukamagwiritsa ntchito "-O2" mulingo wokhathamiritsa, vectorization imayatsidwa mwachisawawa (the -ftree-vectorize ndi -fvect-cost-model=njira zotsika mtengo kwambiri zimayatsidwa). Mtundu wotchipa kwambiri umalola vectorization pokhapokha ngati khodi ya vector ingathe m'malo mwa scalar code yomwe ikusinthidwa.
  • Kuwonjezedwa kwa "-ftrivial-auto-var-init" mode kuti athe kuyambitsa momveka bwino zosintha pa stack kuti azitha kuyang'anira zovuta ndikuletsa zovuta zomwe zimagwirizanitsidwa ndi kugwiritsa ntchito mitundu yosadziwika bwino.
  • Kwa zilankhulo za C ndi C ++, ntchito yomanga __builtin_dynamic_object_size yawonjezeredwa kuti mudziwe kukula kwa chinthu, chogwirizana ndi ntchito yofanana ndi Clang.
  • Kwa zilankhulo za C ndi C ++, chithandizo cha "chosapezeka" chawonjezedwa (mwachitsanzo, mutha kuyika zolemba zomwe zingapangitse cholakwika ngati mutayesa kuzigwiritsa ntchito).
  • Pa zilankhulo za C ndi C++, chithandizo cha malangizo okonzekeratu "#elifdef" ndi "#elifndef" awonjezedwa.
  • Wowonjezera "-Wbidi-chars" mbendera kuti awonetse chenjezo ngati zilembo za UTF-8 zikugwiritsidwa ntchito molakwika, kusintha ndondomeko yomwe malemba a bidirectional akuwonetsedwa.
  • Anawonjezera mbendera ya "-Warray-compare" kuti muchenjeze poyesa kufananiza ma operand awiri omwe amatchula magulu.
  • Kukhazikitsidwa kwa miyezo ya OpenMP 5.0 ndi 5.1 (Open Multi-Processing), yomwe imatanthawuza API ndi njira zogwiritsira ntchito njira zofananira zamapulogalamu pamakina amitundu yambiri komanso osakanizidwa (CPU+GPU/DSP) okhala ndi mayunitsi ogawana kukumbukira ndi ma vectorization (SIMD) , wapitiriza.
  • Kupititsa patsogolo kukhazikitsidwa kwa OpenACC 2.6 parallel programming specifikationer, yomwe imatanthawuza zida zotsitsa ntchito pa GPU ndi mapurosesa apadera monga NVIDIA PTX.
  • Kuthandizira kwa malangizo owonjezera Intel AVX86-FP512 ndi mtundu wa _Float16 wawonjezedwa ku code generation backend kwa x16 zomangamanga.
  • Pazomangamanga za x86, chitetezo chawonjezedwa ku zovuta za mapurosesa zomwe zimayambitsidwa ndi kutsata mongopeka kwa malangizo pambuyo pochita kulumpha mopanda malire. Vutoli limachitika chifukwa chokonzekera bwino malangizo atangotsatira malangizo a nthambi mu kukumbukira (SLS, Straight Line Speculation). Kuti muteteze chitetezo, njira ya "-mharden-sls" ikuperekedwa.
  • Kuzindikira kowonjezereka kwa kugwiritsa ntchito zosinthika zosasinthika ku experimental static analyzer. Kuwonjezedwa koyambirira kothandizira kusanthula kachidindo ka msonkhano muzoyika zamkati. Kuwongolera kukumbukira bwino. Khodi yosinthira mawu yalembedwanso.
  • Onjezani mafoni 30 atsopano ku libgccjit, laibulale yogawidwa yophatikizira makina opanga ma code munjira zina ndikuigwiritsa ntchito ku JIT kuphatikiza bytecode kukhala makina amakina.
  • Thandizo la CO-RE (Compile Once - Run Everywhere) makina awonjezedwa kumbuyo kuti apange BPF bytecode, yomwe imakulolani kuti mupange ndondomeko ya mapulogalamu a eBPF a Linux kernel kamodzi kokha ndikugwiritsa ntchito chojambulira chapadera chomwe chimasintha pulogalamu yodzaza ku kernel yamakono ndi BPF Types Format). CO-RE imathetsa vuto la kusuntha kwa mapulogalamu ophatikizidwa a eBPF, omwe m'mbuyomu adatha kugwiritsidwa ntchito mu mtundu wa kernel womwe adasonkhanitsidwa, popeza momwe zinthu ziliri pamapangidwe a data zimasintha kuchokera ku mtundu kupita ku mtundu.
  • Kumbuyo kwa RISC-V kumawonjezera chithandizo chazomangamanga zatsopano za zba, zbb, zbc ndi zbs, komanso zowonjezera za ISA za vekitala ndi ntchito za scalar cryptographic. Mwachisawawa, chithandizo cha RISC-V ISA 20191213 chimaperekedwa.
  • Thandizo la mtundu wa __int128_t/integer(kind=16) wawonjezedwa ku code generation backend ya AMD GPUs kutengera GCN microarchitecture. Ndizotheka kugwiritsa ntchito magulu a ntchito a 40 pa unit unit (CU) ndi mpaka 16 malangizo otsogolera (wavefront, seti ya ulusi wopangidwa mofanana ndi SIMD Engine) pa gulu. M'mbuyomu, gawo limodzi lokha la malangizo pa CU ndilololedwa.
  • NVPTX backend, yopangidwa kuti ipange kachidindo pogwiritsa ntchito NVIDIA PTX (Parallel Thread Execution) yopangira mapangidwe, yawonjezera luso logwiritsa ntchito mbendera "-march", "-mptx" ndi "-march-map". Kuthandizira kwa PTX ISA sm_53, sm_70, sm_75 ndi sm_80. Zomangamanga zokhazikika ndi sm_30.
  • Kukhazikitsa kwa ntchito zomangidwira kwalembedwanso kumbuyo kwa mapurosesa a PowerPC/PowerPC64/RS6000. Ntchito zomangidwira __builtin_get_texasr, __builtin_get_texasru, __builtin_get_tfhar, __builtin_get_tfiar, __builtin_set_texasr, __builtin_set_texasru, __builtin_get_tfhar, __builtin_get_tfiar, __builtin_set_texasr, __builtin_set_texasru, __builtin_builtin_set_builtin_set_builtin
  • Thandizo la Arm Ampere-64 (-mcpu/-mtune ampere1), Arm Cortex-A1 (cortex-a510), Arm Cortex-A510 (cortex-a710) ndi Arm Cortex-X710 (cortex- x2). Thandizo lowonjezera pazosankha zatsopano za ARMv2 kuti mugwiritse ntchito ndi "-march" njira: armv8-a, armv8.7-a, armv8.8-a. Kukhazikitsa kowonjezera kwa ntchito za C zomwe zidapangidwa mu compiler (Intrinsics) pakukweza ma atomiki ndikusunga kukumbukira, kutengera kugwiritsa ntchito malangizo owonjezera a ARM (ls9). Zowonjezera zothandizira kufulumizitsa ntchito za memcpy, memmove ndi memset pogwiritsa ntchito mopsoption ARM yowonjezera.
  • Onjezani njira yatsopano yowunikira "-fsanitize=shadow-call-stack" (ShadowCallStack), yomwe ikupezeka pakupanga kwa AArch64 ndipo imagwira ntchito pomanga ma code ndi "-fixed-r18" njira. Njirayi imapereka chitetezo kuti musalembenso adilesi yobwerera kuchokera kuntchito ngati buffer itasefukira pa stack. Chofunikira cha chitetezo ndikusunga adilesi yobwerera mumtundu wina wa "mthunzi" mutatha kusamutsa kuwongolera ku ntchito ndikubwezeretsanso adilesiyi musanatuluke.

Source: opennet.ru

Kuwonjezera ndemanga