Kuburitswa kweiyo GCC 10 compiler suite

Mushure megore rebudiriro yakabudiswa kusunungurwa kweseti yemahara yevagadziri GCC 10.1, yekutanga kuburitswa kukuru mubazi idzva reGCC 10.x. Maererano ne chirongwa chitsva nhamba dzekuburitsa, vhezheni 10.0 yakashandiswa mukuvandudza, uye nguva pfupi isati yaburitswa GCC 10.1, bazi reGCC 11.0 rakanga ratove nebazi, pahwaro hwaizotevera kuburitswa kwakakosha, GCC 11.1, kwaizoumbwa.

GCC 10.1 inocherechedzwa pakushandiswa kwezvinyowani zvakawanda mumutauro weC++ wakagadziridzwa chiyero cheC++20, kuvandudzwa kune hukama neramangwana C mutauro mwero (C2x), magadzirirwo matsva mumubatanidzwa backends uye rutsigiro rwekuyedza. static analysis mode. Pamusoro pezvo, panguva yekugadzirira bazi idzva, chirongwa chakatamisa nzvimbo kubva kuSVN kuenda kuGit.

chikuru change:

  • Added experimental mode of static analysis "-fanalyzer", iyo inoita resource-yakanyanya interprocedural ongororo yekodhi nzira dzekuita uye data inoyerera muchirongwa. Iyo modhi inokwanisa kuona matambudziko padanho rekubatanidza, sekufona kaviri kune yemahara () basa renzvimbo imwe yekurangarira, faira descriptor leaks, dereferencing uye kupfuudza null pointers, kuwana yakasunungurwa memory block, uchishandisa uninitialized values, nezvimwe. Iko kushandiswa kweiyo modhi nyowani yeOpenSSL kodhi yakatoita kuti zvikwanise kuziva ngozi ine ngozi.
  • Yakavandudzwa interprocedural optimizations. Iyo IPA-SRA (Interprocedural Scalar Shared Replacement) pass yakagadziridzwa kuti ishande panguva yekusunga uye, pakati pezvimwe zvinhu, ikozvino inobvisa komputa uye kudzoserwa tsika dzisina kushandiswa. Mu "-O2" optimization mode, iyo "-finline-functions" sarudzo inogoneswa, iyo inodzoserwa kuti ifarire yakawanda compact kodhi pamusoro pekuita kwekuita. Basa reiyo heuristic yeinline basa rekuisa rakakwidziridzwa. Inline yekuwedzera uye basa cloning heuristics ikozvino inogona kushandisa ruzivo nezve kukosha kwehuwandu kufanotaura kushanda kwega kwega shanduko. Kune C ++, iko kurongeka kwemhando-yakavakirwa alias parsing yakagadziridzwa.
  • Yakavandudzwa Yekubatanidza Nguva Yekugadzirisa (LTO). Yakawedzera itsva executable lto-dump kuseta zvakare ruzivo nezve chinhu mafaera neLTO bytecode. Parallel LTO inopfuura inongotarisa huwandu hwekumhanya panguva imwe chete kuita mabasa uye, kana isingakwanise kutsanangurwa, shandisa ruzivo nezve huwandu hweCPU cores sechinhu chinofananidzira. Yakawedzera kugona kumanikidza LTO bytecode uchishandisa zstd algorithm.
  • Iyo optimization mechanism inoenderana nemhedzisiro yekodhi profiling (PGO - Profile-inotungamirwa optimization) yakagadziridzwa, iyo inoburitsa yakawedzera kodhi kodhi zvichienderana nekuongororwa kwehunhu hwekuita kwekodhi. Yakavandudzwa kuchengetedza chimiro panguva yekubatanidza uye inopisa / inotonhora kodhi kupatsanurwa. Via the option "-fprofile-valuesΒ»inogona ikozvino kutarisa kusvika ku4 profile values, semuenzaniso kune isina kunanga mafoni uye nekupa ruzivo rwakanyanya rweprofile.
  • Parallel programming specification inoshandiswa kuC, C++ uye Fortran mitauro OpenACC 2.6, iyo inotsanangudza maturusi ekudonhedza mashandiro paGPU uye ma processor akasarudzika akadai seNVIDIA PTX. Kuitwa kwemwero kwave kuda kupera Vhura MP 5.0 (Vhura Multi-Processing), iyo inotsanangura iyo API uye nzira dzekushandisa dzakafanana hurongwa nzira pane akawanda-musimboti uye hybrid (CPU+GPU/DSP) masisitimu ane yakagovaniswa ndangariro uye vectorization zvikamu (SIMD). Akawedzera maficha akadai seyekupedzisira ega zvimiso, scan uye loop dhairekitori, kurongeka uye use_device_addr mataurirwo. YeOpenMP neOpenACC, rutsigiro rwakawedzerwa pakuburitsa mabasa pachizvarwa chechina (Fiji) uye chizvarwa chechishanu AMD Radeon (GCN) GPUs (VEGA 10/VEGA 20).
  • Kune mitauro yemhuri yeC, basa re "kuwana" rakawedzerwa kutsanangura kuwanikwa kwebasa kuzvinhu zvakapfuudzwa nereferensi kana pointer, uye kubatanidza zvinhu zvakadaro nenharo dzakakwana dzine ruzivo nezvehukuru hwezvinhu. Kushanda pamwe chete ne "access", iyo "mhando" hunhu hunoitwa kuti ione kupinda kwakashata kubva kumabasa emushandisi, semuenzaniso, kana uchinyora kukosha kune imwe nzvimbo iri kunze kwemiganhu yehurongwa. Yakawedzerwawo i "symver" hunhu hwekubatanidza zviratidzo mufaira reELF rine nhamba dzeshanduro chaiyo.
  • Yambiro itsva yakawedzerwa:
    • "-Wstring-compare" (inogoneswa ne "-Wextra") - inoyambira nezve kuvapo kwezvirevo umo zero inofananidzwa nemhedzisiro yekudaidza strcmp uye strncmp mabasa, ayo akaenzana nekusingaperi nekuda kwekuti kureba. yenharo imwe yakakura kupfuura saizi yenhevedzano munharo yechipiri .
    • "-Wzero-length-bounds" (inogoneswa ne "-Warray-bounds") - inonyevera nezve kuwana zvinhu zvakarongwa zvehurefu hwe zero, izvo zvinogona kutungamirira kukunyora mamwe data.
    • Iyo "-Warray-bounds", "-Wformat-overflow", "-Wrestrict", "-Wreturn-local-addr" uye "-Wstringop-overflow" yambiro yakawedzerwa kuti iwedzere huwandu hwekunze kwemiganhu. izvo zvinobatwa.
  • Wakaita kugona kudoma zvakananga mavara akakura muzviratidzi uchishandisa encoding iripo (UTF-8 neiyo default) kwete UCN notation (\uNNNN kana \UNNNNNNNNN). Semuyenzaniso:

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

  • Pamutauro weC, chikamu chezvinyowani zvakagadziridzwa mukati meiyo C2X chiyero chaitwa (chinogoneswa nekutsanangura -std=c2x uye -std=gnu2x): rutsigiro rwe[[]]" syntax yaonekwa yekutsanangura hunhu sezviri mukati. C++ (somuenzaniso, [[gnu ::const]], [[deprecated]], [[fallthrough]] uye [[pamwe_zvisina kushandiswa]]. Yakawedzerwa tsigiro ye "u8" syntax yekutsanangura zvinoramba zviripo zvine mabhii eUTF-8.
    Yakawedzera macros matsva ku . Yakawedzera "% OB" uye "% Ob" inotsiva kune strftime.

  • Iyo yekusarudzika modhi yeC ndeye "-fno-common", iyo inobvumira kuwana kwakaringana kuchinjika kwepasi rose pane mamwe mapuratifomu.
  • Kune C ++, dzinenge gumi nenhanhatu shanduko uye hutsva hwakaitwa, hwakagadziridzwa muC ++ 16 standard. Kusanganisira iro rakawedzera kiyi izwi rekuti "constit"
    uye rutsigiro rwekuwedzera template rwaitwa "pfungwa". Pfungwa dzinokutendera kuti utsanangure seti ye template paramende inodikanwa iyo, panguva yekubatanidza, inodzikamisa seti yenharo dzinogona kugamuchirwa se template paramita. Mafungiro anogona kushandiswa kudzivirira kusawirirana kunonzwisisika pakati pezvinhu zvemhando dze data dzinoshandiswa mukati me template uye dhata yemhando yezvinhu zveiyo yekuisa paramita.

  • G++ inopa kuonekwa kwemaitiro asina kutsanangurwa anokonzerwa nekuchinja zvinhu zvinogara zvichiitwa kuburikidza ne constexpr. Yakaderedzwa ndangariro kushandiswa nemuunganidzi paunenge uchiverenga constexpr. Yakawedzera yambiro nyowani "-Wmismatched-tags" uye "-Wredundant-tags".
  • Sarudzo nyowani dzemutsara wekuraira dzakakurudzirwa:
    • "-fallocation-dce" kubvisa zvisingakoshi zviviri zve "itsva" uye "delete" vashandisi.
    • "-fprofile-partial-training" kudzima saizi optimization yekodhi isina kudzidzira kumhanya.
    • "-fprofile-reproducible kudzora mwero weprofile reproducibility.
    • "-fprofile-prefix-path" kutsanangura iyo base sosi yekuvaka dhairekitori inoshandiswa kune yakaparadzana chimiro chizvarwa (ye "-fprofile-generate=profile_dir" uye "-fprofile-use=profile_dir").
  • Mune yambiro mameseji ezvataurwa sarudzo, ma hyperlink anopiwa anokubvumira kuti uende kune zvinyorwa zvezvisarudzo izvi. URL inotsiva inodzorwa uchishandisa iyo "-fdiagnostics-urls" sarudzo.
  • Yakawedzera preprocessor opareta "__vaka_vaka", iyo inogona kushandiswa kutarisa yakavakirwa-mukati mabasa.
  • Yakawedzera chinhu chitsva chakavakirwa-mukati "__builtin_roundeven" nekushandiswa kweiyo inotenderedza basa inotsanangurwa mune ISO/IEC TS 18661 tsananguro, yakafanana ne "round", asi inotenderedza chikamu chikuru kupfuura 0.5 kumusoro (kusvika kune yakakura kukosha), isingasviki 0.5 - pasi (kusvika zero), uye yakaenzana ne 0.5 - kutanga kubva pakuenzanisa kwenhamba yepeniltimate.
  • Kune iyo AArch64 architecture, tsigiro yeSVE2 yekuwedzera yakawedzerwa uye tsigiro yeSVE (Scalable Vector Extension) yakagadziridzwa, kusanganisira yakawedzerwa rutsigiro rweakavakirwa-mukati SVE ACLE mabasa nemhando, uye kushandiswa kwevectorization. Tsigiro yeLSE (Makuru System Extensions) uye TME (Transactional Memory Extension) yakawedzerwa. Yakawedzera mirairo mitsva yakatsanangurwa muArmv8.5-A uye Armv8.6-A, kusanganisira mirairo yezvakasarudzika nhamba chizvarwa, kutenderera, memory tag kusunga,
    bfloat16 uye kuwedzera matrix. Yakawedzera processor rutsigiro
    Arm Cortex-A77,
    Arm Cortex-A76AE,
    Arm Cortex-A65,
    Arm Cortex-A65AE,
    Arm Cortex-A34 uye
    Marvell ThunderX3.

  • Yakawedzerwa rutsigiro rweABI FDPIC (32-bit function pointers) yeARM64. Yakagadziridzwa zvakare uye yakagadziridzwa kugadzirisa kwe64-bit integer mashandiro. Yakawedzera CPU rutsigiro
    Arm Cortex-A77,
    Arm Cortex-A76AE uye
    Arm Cortex-M35P. Yakawedzera tsigiro yeACLE dhata dhata mirairo, kusanganisira 32-bit SIMD, 16-bit kuwanda, latch arithmetic, uye kumwe DSP algorithm optimizations. Yakawedzera kuyedza rutsigiro rweACLE CDE (Custom Datapath Extension) mirayiridzo.

  • Yakanyanya kunatsiridza kodhi chizvarwa uye vectorization mumashure me AMD GPUs zvichibva paGCN microarchitecture.
  • Yakawedzera rutsigiro rweXMEGA-senge zvishandiso zveAVR zvivakwa
    ATtiny202, ATtiny204, ATtiny402, ATtiny404, ATtiny406, ATtiny804, ATtiny806, ATtiny807, ATtiny1604, ATtiny1606, ATtiny1607, ATmega808, ATmega809, ATmega1608mega1609 ATmega3208 ATmega3209, ATmega4808 ATmega4809 megaXNUMX uye ATmegaXNUMX.

  • Iyo itsva Intel ENQCMD yekuraira set architecture yekuwedzera (-menqcmd) yakawedzerwa kune IA-32/x86-64 architecture. Yakawedzerwa rutsigiro rweIntel Cooperlake (-march=cooperlake, inosanganisira iyo AVX512BF16 ISA yekuwedzera) uye Tigerlake (-march=tigerlake, inosanganisira iyo MOVDIRI, MOVDIR64B uye AVX512VP2INTERSECT ISA extensions) CPUs.
  • Kuitwa kweHSAIL (Heterogeneous System Architecture Intermediate Language) kune heterogeneous computing masisitimu zvinoenderana neHSA architecture yakarambwa uye ingangozobviswa mukuburitswa kunotevera.

Source: opennet.ru

Voeg