Kutulutsidwa kwa GCC 10 compiler suite

Pambuyo pa chaka cha chitukuko losindikizidwa kumasulidwa kwa gulu laulere la compilers GCC 10.1, kutulutsidwa kwakukulu koyamba munthambi yatsopano ya GCC 10.x. Malinga ndi dongosolo latsopano manambala otulutsidwa, mtundu wa 10.0 unagwiritsidwa ntchito panthawi yachitukuko, ndipo patangopita nthawi yochepa kuti GCC 10.1 itulutsidwe, nthambi ya GCC 11.0 inali itayamba kale, pamaziko omwe kumasulidwa kotsatira, GCC 11.1, kudzapangidwa.

GCC 10.1 ndiyodziwikiratu pakukhazikitsa zatsopano zambiri m'chilankhulo cha C++ chopangidwira mulingo wa C++20, kuwongolera kokhudzana ndi chilankhulo chamtsogolo cha C (C2x), kukhathamiritsa kwatsopano muzosunga zobwezeretsera ndi chithandizo choyesera. static kusanthula mode. Kuphatikiza apo, pokonzekera nthambi yatsopano, ntchitoyi idasamutsa malo osungiramo zinthu kuchokera ku SVN kupita ku Git.

waukulu kusintha:

  • Awonjezedwa njira yoyesera ya static analysis "- wofanizira", yomwe imachita kusanthula kozama kwa njira zopangira ma code ndikuyenda kwa data mu pulogalamu. Njirayi imatha kuzindikira zovuta pakuphatikiza, monga kuyimbira kawiri ku free() ntchito ya malo amodzi okumbukira, kutayikira kwamafayilo, kutsitsa ndikudutsa zolozera zopanda pake, kupeza ma block omasulidwa, kugwiritsa ntchito zikhalidwe zosadziwika, ndi zina zambiri. Kugwiritsa ntchito njira yatsopano ya code ya OpenSSL kwapangitsa kale kuzindikira chiopsezo chowopsa.
  • Kukhathamiritsa kwa interprocedural. Chiphaso cha IPA-SRA (Interprocedural Scalar Shared Replacement) chakonzedwanso kuti chigwire ntchito panthawi yomanga ndipo, mwa zina, tsopano chikuchotsa zikhalidwe zomwe sizinagwiritsidwe ntchito. Mu "-O2" optimization mode, njira ya "-finline-functions" imayatsidwa, yomwe imabwezeretsedwanso kuti ikonde kachidindo kakang'ono kwambiri pakugwirira ntchito. Ntchito ya heuristic yoyika ntchito zoyendera yapita patsogolo. Kukula kwapaintaneti ndi ma cloning heuristics tsopano atha kugwiritsa ntchito zambiri zamitundu yamtengo wapatali kulosera zakusintha kwapayekha. Kwa C++, kulondola kwa mtundu-based alias parsing kwawongoleredwa.
  • Kukhathamiritsa Kwa Nthawi Yogwirizanitsa (LTO). Anawonjezera executable yatsopano lto-dump kukhazikitsanso zambiri zamafayilo azinthu ndi LTO bytecode. Parallel LTO idutsa zimangodziwiratu kuchuluka kwa ntchito zomwe zikuyenda nthawi imodzi, ndipo ngati sizingadziwike, gwiritsani ntchito zambiri za kuchuluka kwa ma CPU cores ngati chinthu chofananira. Anawonjezera kuthekera kwa compress LTO bytecode pogwiritsa ntchito zstd algorithm.
  • Makina okhathamiritsa potengera zotsatira za mbiri ya ma code (PGO - Profile-guided optimization) yasinthidwa, yomwe imapanga code yabwino kwambiri kutengera kusanthula kwa machitidwe a code. Kuwongolera bwino kwa mbiri panthawi yophatikiza komanso kulekanitsa kotentha / kozizira. Kudzera pa option "-fprofile-valuesΒ» tsopano atha kuyang'anira mpaka ma profaili 4, mwachitsanzo pama foni osadziwika ndikupereka zambiri zambiri.
  • Mafotokozedwe ofananira amapulogalamu akhazikitsidwa m'zilankhulo za C, C++ ndi Fortran OpenACC 2.6, yomwe imatanthauzira zida zotsitsa ntchito pa GPUs ndi mapurosesa apadera monga NVIDIA PTX. Kukhazikitsidwa kwa muyezo kwatsala pang'ono kumaliza Pulogalamu ya OpenMP 5.0 (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). Zowonjezeredwa monga zosunga zachinsinsi, scan ndi loop malangizo, dongosolo ndi use_device_addr mawu. Kwa OpenMP ndi OpenACC, chithandizo chawonjezedwa pakutsitsa ntchito pa m'badwo wachinayi (Fiji) ndi AMD Radeon (GCN) GPUs za m'badwo wachisanu (VEGA 10/VEGA 20).
  • Kwa zilankhulo za banja la C, ntchito ya "kufikira" yawonjezedwa kuti ifotokoze mwayi wantchitoyo kuzinthu zomwe zadutsidwa ndi zolozera kapena cholozera, ndikuphatikiza zinthu zotere ndi mikangano yonse yomwe ili ndi chidziwitso cha kukula kwa zinthuzo. Kuti mugwire ntchito limodzi ndi "access", "mtundu" umagwiritsidwa ntchito kuti muwonetsetse kuti palibe cholakwika ndi ntchito za ogwiritsa ntchito, mwachitsanzo, polemba zikhalidwe kudera lomwe lili kunja kwa malire. Chowonjezeranso ndi "symver" yokhudzana ndi zizindikiro mu fayilo ya ELF yokhala ndi manambala enaake.
  • Machenjezo atsopano awonjezedwa:
    • "-Wstring-compare" (yothandizidwa ndi "-Wextra") - imachenjeza za kukhalapo kwa mawu omwe zero amafananizidwa ndi zotsatira za kuyitana ntchito za strcmp ndi strncmp, zomwe zimafanana ndi nthawi zonse chifukwa chakuti kutalika Mfundo imodzi ndi yaikulu kuposa kukula kwa mkangano wachiwiri .
    • "-Wzero-length-bounds" (yothandizidwa ndi "-Warray-bounds") - imachenjeza za kupeza zinthu zingapo zautali wa ziro, zomwe zingapangitse kuti alembenso deta ina.
    • Machenjezo a "-Warray-bounds", "-Wformat-overflow", "-Wrestrict", "-Wreturn-local-addr" ndi "-Wstringop-overflow" machenjezo awonjezedwa kuti awonjezere chiwerengero cha zochitika kunja kwa malire. zomwe zimayendetsedwa.
  • Yakhazikitsa luso lotha kutchula zilembo zazikulu pazozindikiritsa pogwiritsa ntchito encoding yapano (UTF-8 mwachisawawa) osati mawu a UCN (\uNNNN kapena \UNNNNNNNNN). Mwachitsanzo:

    static const int Ο€ = 3;
    int get_naΓ―ve_pi() {
    kubwerera p;
    }

  • Kwa chilankhulo cha C, gawo lina lazinthu zatsopano zomwe zapangidwa mkati mwa muyezo wa C2X zakhazikitsidwa (zothandizidwa ndi kutchula -std=c2x ndi -std=gnu2x): kuthandizira kwa "[[]]" syntax yawonekera pofotokozera makhalidwe monga momwe zilili. C++ (mwachitsanzo, [[gnu ::const]], [[deprecated]], [[fallthrough]] ndi [[mwina_osagwiritsidwa ntchito]]. Thandizo lowonjezeredwa la mawu akuti "u8" otanthauzira mawu osasinthasintha okhala ndi zilembo za UTF-8.
    Onjezani ma macros atsopano ku . Onjezani "% OB" ndi "% Ob" m'malo mwa strftime.

  • Njira yosasinthika ya C ndi "-fno-common", yomwe imalola mwayi wofikira kumitundu yapadziko lonse pamapulatifomu ena.
  • Kwa C ++, pafupifupi zosintha za 16 ndi zatsopano zakhazikitsidwa, zopangidwa muyeso ya C ++20. Kuphatikiza mawu ofunikira owonjezera "constist"
    ndipo chithandizo chazowonjezera ma template chakhazikitsidwa "malingaliro". Malingaliro amakulolani kufotokozera zofunikira za template zomwe, panthawi yophatikiza, zimachepetsa mikangano yomwe ingavomerezedwe ngati magawo a template. Malingaliro angagwiritsidwe ntchito kupewa kusagwirizana koyenera pakati pa katundu wa mitundu ya deta yomwe imagwiritsidwa ntchito mkati mwa template ndi mtundu wa data wa magawo olowetsamo.

  • G++ imapereka kuzindikira kwa machitidwe osadziwika omwe amayamba chifukwa chosintha zinthu mosalekeza kudzera mu constexpr. Kuchepetsa kukumbukira kukumbukira ndi compiler powerengera constexpr. Anawonjezera machenjezo atsopano "-Wmismatched-tags" ndi "-Wredundant-tags".
  • Njira zatsopano za mzere wamalamulo zaperekedwa:
    • "-fallocation-dce" kuchotsa awiriawiri osafunikira a "zatsopano" ndi "delete" ogwiritsira ntchito.
    • "-fprofile-partial-training" kuti mulepheretse kukhathamiritsa kwa ma code omwe alibe maphunziro.
    • "-fprofile-reproducible kuti athe kuwongolera kuchuluka kwa mbiri.
    • "-fprofile-prefix-path" kutanthauzira chikwatu choyambira chomwe chimagwiritsidwa ntchito popanga mbiri (ya "-fprofile-generate=profile_dir" ndi "-fprofile-use=profile_dir").
  • M'mawu ochenjeza pazosankha zomwe zatchulidwa, ma hyperlink amaperekedwa omwe amakulolani kuti mupite ku zolemba za zosankhazi. Kusintha kwa URL kumawongoleredwa pogwiritsa ntchito njira ya "-fdiagnostics-urls".
  • Wowonjezera preprocessor "__wamanga", yomwe ingagwiritsidwe ntchito kuyang'ana ntchito zomangidwa.
  • Anawonjezera ntchito yatsopano yomangidwa "__builtin_roundeven" ndikukhazikitsa ntchito yozungulira yomwe ikufotokozedwa mu ISO/IEC TS 18661, yofanana ndi "round", koma yozungulira gawo lalikulu kuposa 0.5 mmwamba (mpaka mtengo wokulirapo), zosakwana 0.5 - pansi (mpaka ziro), ndipo wofanana ndi 0.5 - kuyambira pamlingo wa chiwerengero cha penultimate.
  • Pazomangamanga za AArch64, chithandizo chowonjezera cha SVE2 chawonjezedwa ndipo chithandizo cha SVE (Scalable Vector Extension) chawongoleredwa, kuphatikiza chithandizo chowonjezera cha ntchito ndi mitundu ya SVE ACLE, komanso kugwiritsa ntchito vectorization. Thandizo la LSE (Large System Extensions) ndi TME (Transactional Memory Extension) lakulitsidwa. Onjezani malangizo atsopano omwe aperekedwa mu Armv8.5-A ndi Armv8.6-A, kuphatikiza malangizo opangira manambala mwachisawawa, kuzungulira, kumanga ma tag,
    bfloat16 ndi kuchulukitsa kwa matrix. Thandizo lowonjezera la purosesa
    Arm Cortex-A77,
    Arm Cortex-A76AE,
    Arm Cortex-A65,
    Arm Cortex-A65AE,
    Arm Cortex-A34 ndi
    Marvell ThunderX3.

  • Thandizo lowonjezera la ABI FDPIC (32-bit function pointers) la ARM64. Kukonzedwanso ndi kukhathamiritsa kwa magwiridwe antchito a 64-bit. Thandizo la CPU lowonjezera
    Arm Cortex-A77,
    Arm Cortex-A76AE ndi
    Arm Cortex-M35P. Thandizo lowonjezereka la malangizo a ACLE pokonza deta, kuphatikizapo 32-bit SIMD, kuchulukitsa kwa 16-bit, masamu a latch, ndi kukhathamiritsa kwa ma algorithm ena a DSP. Anawonjezera chithandizo choyesera cha malangizo a ACLE CDE (Custom Datapath Extension).

  • Kupititsa patsogolo kwambiri kupanga ma code ndi vectorization kumbuyo kwa AMD GPUs kutengera GCN microarchitecture.
  • Thandizo lowonjezera la zida zonga XMEGA zamamangidwe a AVR
    ATtiny202, ATtiny204, ATtiny402, ATtiny404, ATtiny406, ATtiny804, ATtiny806, ATtiny807, ATtiny1604, ATtiny1606, ATtiny1607, ATmega808, ATmega809, ATmega1608 ATmega1609, ATmega3208 ATmega3209, ATmega4808, ATmega4809 megaXNUMX ndi ATmegaXNUMX.

  • A Intel ENQCMD instruction set architecture extension (-menqcmd) yawonjezedwa kwa zomangamanga za IA-32/x86-64. Thandizo lowonjezera la Intel Cooperlake (-march=cooperlake, likuphatikiza AVX512BF16 ISA extension) ndi Tigerlake (-march=tigerlake, ikuphatikiza MOVDIRI, MOVDIR64B ndi AVX512VP2INTERSECT ISA extensions) CPUs.
  • Kukhazikitsa kwa HSAIL (Heterogeneous System Architecture Intermediate Language) pamakompyuta amitundu yosiyanasiyana yotengera kamangidwe ka HSA kwatsitsidwa ndipo mwina kuchotsedwa kumasulidwa mtsogolo.

Source: opennet.ru

Kuwonjezera ndemanga