Scaoileadh sraith tiomsaitheoirí GCC 9

Tar éis bliana d'fhorbairt foilsithe Bailiúchán de tiomsaitheoirí saor in aisce, GCC 9.1, an chéad scaoileadh mór sa bhrainse nua GCC 9.x. De réir scéim nua uimhreacha scaoilte, baineadh úsáid as leagan 9.0 sa phróiseas forbartha, agus go gairid roimh scaoileadh GCC 9.1, bhí brainse GCC 10.0 tagtha chun cinn cheana féin, ar a mbonn a bhunófaí an chéad eisiúint suntasach eile, GCC 10.1.

Tá GCC 9.1 suntasach as tacaíocht a chobhsú don chaighdeán C++17, ag leanúint ar aghaidh ag cur i bhfeidhm inniúlachtaí an chaighdeáin C++20 sa todhchaí (códainmnithe C++2a), cuimsiú ar an frontend don teanga D, tacaíocht pháirteach do OpenMP 5.0 , tacaíocht beagnach iomlán do OpenACC 2.5, méadú ar scalability leas iomlán a bhaint idir nósanna imeachta agus leas iomlán a bhaint ag an gcéim cheangailteach, leathnú uirlisí diagnóiseacha agus rabhaidh nua a chur leis, backends do OpenRISC, C-SKY V2 agus AMD GCN GPU.

An príomh- athruithe:

  • Tacaíocht bhreise don teanga ríomhchlárúcháin D. Cuimsíonn GCC tosaigh le tiomsaitheoir GDC (Gnu D Compiler) agus leabharlanna ama rite (libphobos), a ligeann duit GCC caighdeánach a úsáid chun cláir a chruthú sa teanga ríomhchlárúcháin D. An próiseas chun tacaíocht teanga D a chumasú i GCC Tá tús curtha ar ais i 2011, ach dragged ar mar gheall ar an ngá atá leis an gcód a chomhlíonadh i gcomhréir le ceanglais GCC agus fadhbanna maidir le cearta maoine intleachtúla a aistriú go Mars Digiteach, atá ag forbairt teanga ríomhchláraithe D;
  • Tá feabhsuithe déanta ar an ngineadóir cóid. Mar shampla, tá úsáid straitéisí éagsúla chun nathanna Athraigh a leathnú (tábla léim, tástáil giotán, crann cinnidh) ag brath ar chásanna curtha i bhfeidhm. Cuireadh leis an gcumas feidhmeanna líneacha a chuimsíonn slonn Switch a athrú trí leas a bhaint as an leas iomlán a bhaint “-ftree-switch-conversion” (mar shampla, sraith coinníollacha ar nós “cás 2: conas = 205; briseadh; cás 3: conas = 305; briseadh; ;” a thiontú go "100 * conas + 5";
  • Leas iomlán a bhaint idir nósanna imeachta feabhsaithe. Tá socruithe imlonnaithe inlíne curtha in oiriúint do bhunachair chóid C++ nua-aimseartha agus leathnaithe le paraiméadair nua uas-inlíne-insns-beag, uas-inlíne-insns-mhéid, orlach-feidhm neamhlínithe, am feidhme neamhlínithe, orlach gan líne agus neamhlíne -thunk-am. Feabhas ar chruinneas agus ar ionsaitheacht scaradh cód fuar/te. Inscalability feabhsaithe le haghaidh an-mhór aonaid aistriúcháin (mar shampla, nuair a chuirtear leas iomlán a bhaint as ag an gcéim nasctha le cláir mhóra);
  • Feabhsaíodh an mheicníocht leas iomlán a bhaint atá bunaithe ar thorthaí próifíliú cód (PGO - leas iomlán a bhaint as próifíl-treoraithe), rud a ghineann cód níos fearr is féidir bunaithe ar anailís ar shaintréithe forghníomhú an chóid. Rogha achomair"-fprofile-úsáidfolaíonn " anois na modhanna leas iomlán a bhaint "-freisin-lúb-chun-dul chun cinn", "-floop-interchange", "-floop-unroll-and-jam" agus "-ftree-loop-distribution". Baineadh cuimsiú histeagraim le cuntair i gcomhaid, rud a laghdaigh méid na gcomhad le próifílí (gintear histeagraim ar an eitilt anois agus leas iomlán a bhaint á déanamh le linn nascadh);
  • Optimizations Feabhsaithe Ama Nasctha (LTO). Soláthraíodh simpliú cineálacha roimh an toradh a ghiniúint, rud a d'fhág gur féidir méid comhaid réad LTO a laghdú go suntasach, tomhaltas cuimhne a laghdú ag an gcéim cheangailteach, agus feabhas a chur ar chomhthreomharú na n-oibríochtaí. Méadaíodh líon na ndeighiltí (-param lto-partitions) ó 32 go 128, rud a fheabhsaíonn feidhmíocht ar chórais le líon mór snáitheanna LAP. Tá paraiméadar curtha leis chun líon na bpróiseas optamaithe a rialú
    "-param lto-max-streaming-comhthreomhaireacht";

    Mar thoradh air sin, i gcomparáid le GCC 8.3, na leas iomlán a bhaint a tugadh isteach i GCC 9 ceadaithe laghdaigh an t-am tiomsaithe de Firefox 5 agus LibreOffice 66 thart ar 6.2.3%. Tháinig laghdú 7% ar mhéid na gcomhad oibiachta. Tháinig laghdú 8% ar an am ceangailteach ar LAP 11-lárnach. Tá céim leas iomlán a bhaint seicheamhach na céime nasctha anois 28% níos tapúla agus ídíonn sé 20% níos lú cuimhne. Tháinig laghdú 30% ar thomhaltas cuimhne gach próiseálaí den chéim comhthreomhar de LTO;

  • Cuirtear an chuid is mó den tsonraíocht ríomhchláraithe chomhthreomhair i bhfeidhm do theangacha C, C++ agus Fortran OpenACC 2.5, a shainíonn uirlisí le haghaidh oibríochtaí díluchtaithe ar GPUanna agus próiseálaithe speisialaithe ar nós NVIDIA PTX;
  • Tá tacaíocht pháirteach don chaighdeán curtha i bhfeidhm do C agus C++ Oscail MP 5.0 (Ilphróiseáil Oscailte), a shainíonn an API agus modhanna chun modhanna ríomhchláraithe comhthreomhara a chur i bhfeidhm do theangacha C, C++ agus Fortran ar chórais illárnacha agus hibrideacha (CPU+GPU/DSP) a bhfuil aonaid chuimhne agus veicteoirithe roinnte (SIMD) acu. ;
  • Cuireadh rabhaidh nua isteach don teanga C: "-Waddress-of-pacáilte-ball" (luach pointeora neamhailínithe do bhall pacáilte de struchtúr nó d'aontas) agus
    «-Wabsolute-luach“ (agus feidhmeanna á rochtain chun luach absalóideach a ríomh, má tá feidhm níos oiriúnaí don argóint shonraithe, mar shampla, ba cheart fabs(3.14) a úsáid in ionad abs(3.14). Rabhadh nua curtha leis maidir le C++: "-Wdeprecated-copy",
    "-Winit-list-lifetime", "-Wredundant-move", "-Wpessimizing-move" agus "-Wclass-tiontú". Leathnaíodh go leor rabhaidh a bhí ar fáil roimhe seo;

  • Cuireadh tacaíocht thurgnamhach leis do chuid de chaighdeán teanga C amach anseo, dar códainm C2x. Chun tacaíocht C2x a chumasú, bain úsáid as na roghanna "-std=c2x" agus "-std=gnu2x" (chun síntí GNU a chumasú). Tá an caighdeán fós ag céim luath forbartha, mar sin, dá chumais, ní thacaítear ach leis an abairt _Static_assert le argóint amháin (_Static_assert le dhá argóint atá caighdeánaithe in C11);
  • Tá an tacaíocht do chaighdeán C++17 dearbhaithe cobhsaí. Ar an tosaigh, tá cumais teanga C++17 curtha i bhfeidhm go hiomlán, agus i libstdc++, tá na feidhmeanna leabharlainne atá sainithe sa chaighdeán gar do chur i bhfeidhm iomlán;
  • Ar lean chur i bhfeidhm gnéithe den chaighdeán C++2a amach anseo. Mar shampla, cuireadh leis an gcumas raonta a áireamh le linn thúsaithe, cuireadh síntí le haghaidh slonn lambda i bhfeidhm, cuireadh tacaíocht do bhaill fholmha de struchtúir sonraí agus tréithe dóchúla/dócha, soláthraíodh an cumas feidhmeanna fíorúla a ghlaoch i nathanna coinníollach. , etc.
    Chun tacaíocht C++2a a chumasú, bain úsáid as na roghanna "-std=c++2a" agus "-std=gnu++2a". Giotán agus comhaid ceanntásc leagan curtha le libstdc++ le haghaidh C++2a, std::remove_cvref, std::unwrap_reference, std::unwrap_decay_ref, std:: is_nothrow_convertible and std::type_identity traits, std :: midlerp functions :: , std::bind_front,
    std::visit, std::is_constant_valuated and std::assume_aligned, tacaíocht bhreise don chineál char8_t, cuireadh i bhfeidhm an cumas an réimír agus iarmhír teaghráin a sheiceáil (starts_with, ends_with);

  • Tacaíocht bhreise do phróiseálaithe ARM nua
    Cortex-A76, Cortex-A55, Cortex-A76 DynamIQ big.LITTLE agus Neoverse N1. Tacaíocht bhreise do threoracha a tugadh isteach in Armv8.3-A maidir le hoibriú le huimhreacha casta, giniúint uimhreacha randamacha pseudo (rng) agus clibeáil cuimhne (memtag), chomh maith le treoracha maidir le hionsaithe blocála a bhaineann le forghníomhú amhantrach agus oibriú an aonaid tuar brainse. . Maidir leis an ailtireacht AArch64, tá modh cosanta curtha leis crosbhealaí cruacha agus gcarn (“-fstack-clash-protection”). Chun gnéithe na hailtireachta Armv8.5-A a úsáid, cuireadh an rogha “-march=armv8.5-a” leis

  • Áiríonn sé inneall chun cód a ghiniúint do GPUanna AMD bunaithe ar mhicrea-ailtireacht GCN. Tá an cur chun feidhme teoranta faoi láthair d’fheidhmchláir aon-snáithe a thiomsú (tairiscfear tacaíocht chun ríomhanna il-snáithe a dhéanamh trí OpenMP agus OpenACC níos déanaí) agus tacaíocht do GPU Fidsí agus Vega 10;
  • Inneall nua curtha leis le haghaidh próiseálaithe OpenRISC;
  • Inneall curtha leis le haghaidh próiseálaithe C-SKY V2, arna dtáirgeadh ag an gcuideachta Síneach den ainm céanna le haghaidh feistí tomhaltóirí éagsúla;
  • Tacaíonn na roghanna líne ordaithe go léir a fheidhmíonn luachanna beart leis na hiarmhíreanna kb, KiB, MB, MiB, GB agus GiB;
  • Curtha i bhfeidhm Ceadaíonn an rogha “-flive-patching=[inline-only-static|inline-clone]” duit tiomsú sábháilte a bhaint amach do chórais bheophaisteála mar gheall ar rialú il-leibhéil ar úsáid idir-nós imeachta (IPA) leas iomlán a bhaint;
  • Cuireadh leis an rogha "--completion" le haghaidh rialú mínghráin ar chríochnú rogha agus bash in úsáid;
  • Soláthraíonn na huirlisí diagnóiseacha taispeántais de shleachta téacs foinse a léiríonn an uimhir líne agus faisnéis a bhaineann le marcáil amhairc, amhail cineálacha operand. Chun taispeáint uimhreacha líne agus lipéad a dhíchumasú, soláthraítear na roghanna “-fno-diagnostics-show-line-uimhreacha” agus “-fno-diagnostics-show-labels”;

    Scaoileadh sraith tiomsaitheoirí GCC 9

  • Leathnaithe uirlisí chun earráidí i gcód C++ a dhiagnóisiú, inléiteacht fheabhsaithe faisnéise faoi chúiseanna na n-earráidí agus aibhsiú paraiméadair fhadhbacha;

    Scaoileadh sraith tiomsaitheoirí GCC 9

  • Rogha breise “-fdiagnostics-format=json”, a cheadaíonn aschur diagnóiseach a ghiniúint i bhformáid meaisín-inléite (JSON);
  • Cuireadh roghanna próifílithe nua “-fprofile-filter-files” agus “-fprofile-exclude-files” leis chun comhaid foinse a roghnú le próiseáil;
  • Soláthraíonn AddressSanitizer giniúint cód fíoraithe níos dlúithe le haghaidh athróg uathoibríoch, rud a laghdaíonn tomhaltas cuimhne an chomhaid inrite atá á sheiceáil;
  • Aschur feabhsaithe i "-fopt-info» (faisnéis mhionsonraithe faoi bharrfheabhsuithe breise). Cuireadh réimírí nua leis "optamaithe" agus "caillte", chomh maith leis an réimír "nóta" a bhí ar fáil roimhe seo. Aschur breise faisnéise faoin gcinnteoireacht maidir le hinfhilleadh na dtimthriallta agus veicteoiriú na dtimthriallta;
  • Cuireadh an rogha “-fsave-optimization-record” leis, nuair a shonraítear é, sábhálann GCC an comhad SRCFILE.opt-record.json.gz le cur síos ar chinntí maidir le húsáid optamaithe áirithe. Ní hionann an rogha nua agus an modh “-fopt-info” trí mheiteashonraí breise a áireamh, amhail faisnéis faoin bpróifíl agus na slabhraí inlíne;
  • Roghanna breise “-fipa-stack-alignment” agus “-fipa-reference-addressable” chun ailíniú cruachta a rialú agus úsáid modhanna seoltaí (inscríofa amháin nó inléite-beacht) d’athróga statacha le linn leas iomlán a bhaint as idir-nós imeachta;
  • Tugtar isteach feidhmeanna nua ionsuite chun ceangal aitreabúide a rialú chomh maith le hiompar a bhaineann le tuar brainse agus le cur i gcrích teagaisc amhantrach: "__builtin_has_tréith","__builtin_ag súil_le_dóchúlacht"Agus"__builtin_tuairimíocht_sábháilte_luach“. Tá tréith nua curtha leis maidir le feidhmeanna, athróga agus cineálacha chóipeáil;
  • Tá tacaíocht iomlán d'ionchur/aschur asincrónach curtha i bhfeidhm don teanga Fortran;
  • Tá an tacaíocht d’ardáin Solaris 10 (*-*-solaris2.10) agus Cell/BE (Cell Broadband Engine SPU) imithe i léig agus bainfear iad sa chéad mhórscaoileadh eile. Cuireadh deireadh leis an tacaíocht d'ailtireachtaí Armv2, Armv3, Armv5 agus Armv5E. Cuireadh deireadh le tacaíocht do Intel MPX (Eisínteachtaí Cosanta Cuimhne).

Foinse: oscailtenet.ru

Add a comment