Siideynta GCC 10 compiler suite

Sanad ka dib horumarka la daabacay soo daynta koox-kooxeedyo bilaash ah GCC 10.1, sii dayntii ugu horeysay ee weyn ee laanta cusub ee GCC 10.x. Sida waafaqsan nidaam cusub nambarada sii deynta, nooca 10.0 ayaa loo adeegsaday geeddi-socodka horumarinta, wax yar ka hor inta aan la sii dayn GCC 10.1, laanta GCC 11.0 ayaa mar hore la sii daysay, taas oo ku saleysan siideynta soo socota ee muhiimka ah, GCC 11.1, ayaa la samayn doonaa.

GCC 10.1 waxay caan ku tahay hirgelinta hal-abuuro badan oo luqadda C++ ah oo loo sameeyay heerka C++20, hagaajinta la xiriirta heerka luqadda C mustaqbalka (C2x), wanaajinta cusub ee soo-ururinta dhabarka iyo taageerada tijaabada habka falanqaynta taagan. Intaa waxaa dheer, inta lagu jiro diyaarinta laan cusub, mashruucu wuxuu kaydka ka wareejiyay SVN ilaa Git.

Main isbedel:

  • Lagu daray qaabka tijaabada ah ee falanqaynta taagan"-fanalyzer", kaas oo sameeya falanqaynta hab-raacyada isdhexgalka ee kheyraadka ee dariiqyada fulinta code iyo socodka xogta ee barnaamijka. Habkani wuxuu awood u leeyahay in uu ogaado dhibaatooyinka marxaladda isku-dubbaridka, sida laba jeer wicitaanada bilaashka ah () shaqada ee hal aag xusuusta ah, fayl sifeynta sharraxaadda, leexinta iyo gudbinta tilmaamayaasha null, gelitaanka blocks xusuusta xorta ah, isticmaalka qiimaha aan la aqoon, iwm. Isticmaalka qaabka cusub ee koodka OpenSSL ayaa mar horeba suurtageliyay in la aqoonsado baylahda khatarta ah.
  • Hagaajinta hab-socodka isdhexgalka. Kaadhka IPA-SRA (Interprocedural Scalar Shared Replacement) ayaa dib loo qaabeeyey si uu u shaqeeyo wakhtiga xidhmida iyo, waxyaabo kale, hadda waxa uu meesha ka saarayaa qiimayaal la xisaabiyay oo la soo celiyay. Habka kobcinta "-O2", ikhtiyaarka "-finline-functions" waa la dajiyay, kaas oo dib loo habeeyey si loogu door bido kood isku dhafan oo ka badan waxqabadka fulinta. Shaqada heuristic ee geynta shaqada khad dhexe waa la dedejiyay. Balaadhinta khadka iyo shaqada heuristics cloning waxay hadda isticmaali karaan macluumaadka ku saabsan kala duwanaanta qiimaha si ay u saadaaliyaan waxtarka isbeddellada shakhsi ahaaneed. C++, saxnaanta naanaysaha ku salaysan nooca ku salaysan waa la hagaajiyay.
  • Kordhinta Isku xidhka Wakhtiga Hagaajinta (LTO). Lagu daray cusub oo la fulin karo ku shubid si dib loogu habeeyo macluumaadka ku saabsan faylasha shayga leh LTO bytecode. Baasaska LTO ee barbar socda ayaa si toos ah u go'aamiya tirada isku mar wada socdaa waxay sameeyaan hawlo, haddii aan la go'aamin karin, isticmaal macluumaadka ku saabsan tirada kombuyuutarrada CPU si ay isbarbar dhigaan. Waxaa lagu daray awoodda lagu cadaadiyo bytecode LTO iyadoo la adeegsanayo algorithmamka zstd.
  • Habka wanaajinta ee ku salaysan natiijooyinka sifada koodhka (PGO-profile-guided optimization) waa la hagaajiyay, kaas oo soo saara kood aad u wanaagsan oo ku salaysan falanqaynta sifooyinka fulinta code. Dayactirka astaanta guud ee la hagaajiyay inta lagu guda jiro ururinta iyo kala soocida koodka kulul/qabow. Iyada oo la adeegsanayo ikhtiyaarka "-fprofile-qiimahaΒ» hadda waxay la socon kartaa ilaa 4 qiimayaal profile, tusaale ahaan wicitaanada aan tooska ahayn iyo bixinta macluumaad sax ah oo dheeraad ah.
  • Tilmaamaha barnaamijka barbar socda ee loo hirgeliyay luqadaha C, C++ iyo Fortran FurACC 2.6, kaas oo qeexaya aaladaha lagu rari karo hawlaha GPU-yada iyo soo-saareyaal khaas ah sida NVIDIA PTX. Hirgelinta jaangooyooyinka ayaa ku dhawaad ​​dhammaystiran FurMP 5.0 (Open Multi-Processing), kaas oo qeexaya API iyo hababka loo adeegsado hababka bar-baraaminta ee isbarbar-dhigga hababka multi-core iyo hybrid (CPU+GPU/DSP) oo leh unugyada xusuusta iyo vectorization-ka la wadaago (SIMD). Tilmaamo lagu daray sida shuruudaha gaarka ah ee u dambeeya, baarista iyo dardaaranka loop, dalbashada iyo isticmaalka_device_addr tibaaxaha. Loogu talagalay OpenMP iyo OpenACC, taageerada ayaa lagu daray hawlgallada rarista ee jiilka afraad (Fiji) iyo jiilka shanaad ee AMD Radeon (GCN) GPUs (VEGA 10/VEGA 20).
  • Luqadaha qoyska C, shaqada "helitaanka" ayaa lagu daray si loo qeexo gelitaanka shaqada ee walxaha lagu gudbiyay tixraac ama tilmaame, iyo in lagu xiriiriyo walxahan oo leh doodo isku dhafan oo ka kooban macluumaad ku saabsan cabbirka walxaha. Si loola shaqeeyo "helitaanka", "nooca" sifada waxaa loo hirgeliyaa si loo ogaado gelitaanka khaldan ee hawlaha isticmaalaha, tusaale ahaan, marka qiimaha loo qorayo meel ka baxsan xudduudaha diyaarinta. Waxa kale oo lagu daray "symver" sifada calaamadaha laxidhiidha ee faylka ELF oo wata lambaro gaar ah.
  • Digniino cusub ayaa lagu daray:
    • "-Wstring-compare" (oo karti leh "-Wextra") - wuxuu ka digayaa jiritaanka tibaaxaha eber marka la barbar dhigo natiijada wicitaanka shaqooyinka strcmp iyo strncmp, taas oo u dhiganta joogto ah sababtoo ah dhererka dhererka Hal dood ayaa ka weyn xajmiga array ee doodda labaad.
    • "-Wzero-length-bounds" (oo ku shaqeeya "-Warray-bounds") - wuxuu ka digayaa gelitaanka walxaha isku dhafan ee dhererka eber, taas oo horseedi karta in la beddelo xogta kale.
    • Digniinta "-Warray-bounds", "-Wformat-overflow", "-Wrestrict", "-Wreturn-local-adr" iyo "-Wstringop-qulqulaya" digniinaha ayaa la ballaariyay si loo ballaariyo tirada xaaladaha ka baxsan xuduudaha kuwaas oo gacanta lagu hayo.
  • Hirgeliyay awoodda si toos ah loogu qeexo xarfo ballaadhan oo ku jira tilmaameyaal isticmaalaya codeeynta hadda (UTF-8 sida caadiga ah) halkii ay ka ahaan lahayd qoraalka UCN (\uNNNN ama \ UNNNNNNNN). Tusaale ahaan:

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

  • Luuqadda C, qayb ka mid ah sifooyin cusub oo lagu soo saaray heerka C2X ayaa la hirgeliyay (waxaa karti u leh in la cayimo -std=c2x iyo -std=gnu2x): taageerada ereyga β€œ[]]” ayaa u muuqday qeexida sifada sida C++ (tusaale ahaan, [[gnu ::const]], [[kadhac]], [[fallthrough]] iyo [[laga yaabee_aan la isticmaalin]). Taageero lagu daray "u8" syntax si loo qeexo joogtaynta xarfaha UTF-8.
    Waxaa lagu daray macros cusub . Lagu daray "%OB" iyo "%Ob" beddelka strftime.

  • Habka caadiga ah ee C waa "-fno-common", kaas oo u oggolaanaya in si hufan loo galo doorsoomayaasha caalamiga ah ee goobaha qaarkood.
  • C++, ilaa 16 isbeddelo iyo halabuuro ayaa la hirgeliyay, kuwaas oo lagu sameeyay heerka C++20. Oo ay ku jirto ereyga muhiimka ah ee lagu daray "constinit"
    iyo taageerada qaab-kordhinta qaabka waa la fuliyay"fikradda" Fikradaha waxay kuu oggolaanayaan inaad qeexdo shuruudaha cabbirka template, kaas oo, marka la ururiyo, xaddido xujooyinka doodaha ee loo aqbali karo cabbirrada template. Fikradaha waxaa loo isticmaali karaa si looga fogaado is-waafajinta macquulka ah ee udhaxeysa sifooyinka noocyada xogta ee lagu dhex isticmaalo template iyo nooca xogta ee xuduudaha gelinta.

  • G++ waxay bixisaa ogaanshaha dabeecadaha aan la qeexin ee ay sababto beddelka walxaha joogtada ah iyada oo loo marayo constexpr. Isticmaalka xusuusta oo hoos u dhacay isku-duwaha marka la xisaabinayo constexpr. Waxaa lagu daray digniino cusub "-Wmismatched-tags" iyo "-Wredundant-tags".
  • Ikhtiyaarada cusub ee khadka taliska ayaa la soo jeediyay:
    • "-fallocation-dce" si meesha looga saaro lamaanaha aan loo baahnayn ee "cusub" iyo "tirtir" hawlwadeenada.
    • "-fprofile-partial-training" si loo joojiyo hagaajinta cabbirka koodka aan lahayn tabobarka.
    • "-fprofile-reproducible si loo xakameeyo heerka soo saarista astaanta.
    • "-fprofile-prefix-path" si loo qeexo tusaha dhisidda isha saldhigga loo isticmaalo jiilka astaanta gaarka ah (loogu talagalay "-fprofile-generate=profile_dir" iyo "-fprofile-use=profile_dir").
  • Qoraalka digniinta ah ee xulashooyinka la soo sheegay, hyperlinks ayaa lagu bixiyaa kuwaas oo kuu oggolaanaya inaad aaddo dukumeentiyada xulashooyinkan. Beddelka URL waa la xakameeyaa iyadoo la adeegsanayo xulashada "-fdiagnostics-urls".
  • Kudaray hawlwadeenka horudhaciyaha"__dhistay", kaas oo loo isticmaali karo in lagu hubiyo in la dhisay.
  • Waxaa lagu daray hawl cusub oo ku dhex-dhisan "__builtin_roundeven" oo leh hirgelinta shaqada wareega ee lagu qeexay qeexida ISO/IEC TS 18661, oo la mid ah "wareega", laakiin qayb koobaysa in ka badan 0.5 ilaa (qiimo weyn), in ka yar 0.5 - hoos (ilaa eber), oo le'eg 0.5 - laga bilaabo sinnaanta nambarka penultimate.
  • Qaab dhismeedka AArch64, taageerada kordhinta SVE2 ayaa lagu daray iyo taageerada SVE (Scalable Vector Extension) waa la hagaajiyay, oo ay ku jiraan taageerada lagu daray ee SVE ACLE ee ku dhex dhisan shaqooyinka iyo noocyada, iyo isticmaalka vectorization. Taageerada LSE (Large System Extensions) iyo TME (Extensional Memory Extension) waa la balaariyay. Tilmaamaha cusub ee lagu daray ee lagu soo jeediyay Armv8.5-A iyo Armv8.6-A, oo ay ku jiraan tilmaamaha jiilka tirada random, koobinta, xidhitaanka summada xusuusta,
    bfloat16 iyo isku dhufashada matrix. Taageerada processor-ka lagu daray
    Gacan Cortex-A77,
    Gacan Cortex-A76AE,
    Gacan Cortex-A65,
    Gacan Cortex-A65AE,
    Gacan Cortex-A34 iyo
    Marvell ThunderX3.

  • Taageerada lagu daray ABI FDPIC (32-bit tilmaamayaasha shaqada) ee ARM64. Dib loo habeeyey oo la hagaajiyay ee hawlgallada isku xidhka 64-bit. Taageerada CPU ee lagu daray
    Gacan Cortex-A77,
    Arm Cortex-A76AE iyo
    Gacan Cortex-M35P. Taageerada la balaariyay ee tilmaamaha habaynta xogta ACLE, oo ay ku jiraan 32-bit SIMD, 16-bit dhufashada, xisaab xidhka, iyo hagaajinta kale ee DSP algorithm. Taageero tijaabo ah oo lagu daray ACLE CDE (Custom Datapath Extension) tilmaamaha.

  • Soo saarista koodhka oo si weyn loo hagaajiyay iyo hab-samaynta gadaasha dambe ee AMD GPUs oo ku salaysan GCN microarchitecture.
  • Taageero lagu daray qalabka XMEGA u eg ee dhismaha AVR
    ATtiny202, ATtiny204, ATtiny402, ATtiny404, ATtiny406, ATtiny804, ATtiny806, ATtiny807, ATtiny1604, ATtiny1606, ATtiny1607, ATtiny808, ATmegaAT809 1608, ATmega1609, ATmega3208 3209, ATmega4808 iyo ATmega4809.

  • Tilmaame cusub oo Intel ENQCMD ah oo dejiyay fidinta qaab dhismeedka (-menqcmd) ayaa lagu daray naqshadaha IA-32/x86-64. Taageerada lagu daray Intel Cooperlake (-march=cooperlake, waxaa ku jira kordhinta AVX512BF16 ISA) iyo Tigerlake (-march=tigerlake, waxaa ku jira MOVDIRI, MOVDIR64B iyo AVX512VP2INTERSECT ISA kordhinta) CPUs.
  • Hirgelinta HSAIL (Luqadda Dhexdhexaadka ah ee Naqshadeynta Nidaamka Heterogeneous) ee nidaamyada xisaabinta kala duwan ee ku salaysan qaab-dhismeedka HSA waa la joojiyay oo waxay u badan tahay in meesha laga saari doono siidaynta mustaqbalka.

Source: opennet.ru

Add a comment