Scaoileadh sraith tiomsaitheoirí GCC 10

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

Tá GCC 10.1 suntasach as cur i bhfeidhm go leor nuálaíochtaí sa teanga C++ a forbraíodh don chaighdeán C++20, feabhsuithe a bhaineann leis an gcaighdeán teanga C amach anseo (C2x), leas iomlán a bhaint as nua in inneall an tiomsaitheora agus tacaíocht thurgnamhach. modh anailíse statach. Ina theannta sin, le linn brainse nua a ullmhú, d'aistrigh an tionscadal an stór ó SVN go Git.

An príomh- athruithe:

  • Curtha leis modh turgnamhach anailíse statach"-fanalyzer“, a dhéanann anailís idir-nós imeachta atá dian ar acmhainní ar chonairí forghníomhaithe cód agus ar shreafaí sonraí i gclár. Tá an modh in ann fadhbanna a bhrath ag an gcéim tiomsaithe, mar ghlaonna dúbailte ar an bhfeidhm in aisce () le haghaidh limistéar cuimhne amháin, sceitheadh ​​tuairisceora comhaid, díreagairt agus leideanna nialais a rith, rochtain a fháil ar bhlocanna cuimhne saortha, ag baint úsáide as luachanna neamhluaite, etc. Mar gheall ar úsáid an mhodha nua do chód OpenSSL is féidir é a aithint cheana féin leochaileacht chontúirteach.
  • Leas iomlán a bhaint idir nósanna imeachta feabhsaithe. Athdhearadh an pas IPA-SRA (Athsholáthar Scalar Comhroinnte) chun oibriú ag am ceangailteach agus, i measc rudaí eile, baintear luachanna neamhúsáidte ríofa agus aischurtha anois. Sa mhodh leas iomlán a bhaint "-O2", tá an rogha "-finline-functions" cumasaithe, rud a athdhéantar i bhfabhar cód níos dlúithe thar fheidhmíocht forghníomhaithe. Cuireadh dlús le hobair an heorastúla maidir le himscaradh feidhm inlíne. Is féidir le heuristicí leathnaithe inlíne agus clónála feidhme faisnéis a úsáid anois faoi raonta luachanna chun éifeachtúlacht na gclaochluithe aonair a thuar. I gcás C++, feabhsaíodh cruinneas parsála ailias cineál-bhunaithe.
  • Optimizations Feabhsaithe Ama Nasctha (LTO). Cuireadh inrite nua leis lto-dhumpáil chun faisnéis faoi chomhaid oibiachta a athshocrú le bytecode LTO. Cinneann pasanna comhthreomhar LTO go huathoibríoch líon na dtascanna déanta a ritheann go comhuaineach agus, mura féidir iad a chinneadh, úsáid faisnéis faoi líon na gcroí LAP mar fhachtóir comhthreomharaithe. Cuireadh leis an gcumas chun seachchód LTO a chomhbhrú ag baint úsáide as an algartam zstd.
  • 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. Cothabháil próifíle feabhsaithe le linn tiomsaithe agus scaradh cód te/fuar. Tríd an rogha "-fprofile-values» is féidir monatóireacht a dhéanamh anois ar suas le 4 luach próifíle, mar shampla le haghaidh glaonna indíreacha agus faisnéis phróifíle níos cruinne a sholáthar.
  • Sonraíocht ríomhchláraithe comhthreomhar curtha i bhfeidhm do theangacha C, C++ agus Fortran OpenACC 2.6, a shainíonn uirlisí le haghaidh oibríochtaí díluchtaithe ar GPUanna agus próiseálaithe speisialaithe ar nós NVIDIA PTX. Tá cur i bhfeidhm an chaighdeáin beagnach críochnaithe Oscail MP 5.0 (Ilphróiseáil Oscailte), a shainíonn an API agus na modhanna chun modhanna ríomhchláraithe comhthreomhara a chur i bhfeidhm ar chórais illárnacha agus hibrideacha (CPU+GPU/DSP) a bhfuil aonaid chuimhne agus veicteoirithe roinnte (SIMD). Cuireadh gnéithe breise leis ar nós coinníollacha lastprivate, treoracha scanadh agus lúba, sloinn ordú agus úsáid_device_addr. I gcás OpenMP agus OpenACC, tá tacaíocht curtha leis le haghaidh oibríochtaí díluchtaithe ar GPUanna an ceathrú glúin (Fidsí) agus an cúigiú glúin AMD Radeon (GCN) (VEGA 10/VEGA 20).
  • Maidir le teangacha an teaghlaigh C, tá an fheidhm “rochtain” curtha leis chun cur síos a dhéanamh ar rochtain na feidhme ar oibiachtaí trí thagairt nó pointeoir, agus chun rudaí den sórt sin a nascadh le hargóintí slánuimhir ina bhfuil faisnéis faoi mhéid na n-oibiachtaí. Chun oibriú i gcomhar le “rochtain”, cuirtear an tréith “cineál” i bhfeidhm chun rochtain mhícheart ó fheidhmeanna úsáideora a bhrath, mar shampla, nuair a bhíonn luachanna á scríobh chuig limistéar lasmuigh de theorainneacha an eagar. Cuirtear leis freisin an tréith "symver" le siombailí a chomhlachú i gcomhad ELF le huimhreacha leagain ar leith.
  • Cuireadh rabhaidh nua leis:
    • “-Wstring-compare” (cumasaithe le “-Wextra”) - rabhadh faoi láithreacht sloinn ina gcuirtear nialas i gcomparáid leis an toradh ar ghlaoch ar na feidhmeanna strcmp agus strncmp, atá comhionann le tairiseach toisc go bhfuil an fad Tá argóint amháin níos mó ná méid an eagar sa dara argóint.
    • Tugann "-Wzero-length-bounds" (arna chumasú le "-Warray-bounds") - foláireamh maidir le rochtain a fháil ar eilimintí eagair nach bhfuil fad ar bith acu, rud a d'fhéadfadh sonraí eile a fhorscríobh mar thoradh air.
    • Leathnaíodh na rabhaidh “-Warray-bounds”, “-Wformat-overflow”, “-Wrestrict”, “Wreturn-local-addr” agus “-Wstringop-overflow” chun líon na gcásanna lasmuigh de theorainneacha a mhéadú. a láimhseáiltear.
  • Cur i bhfeidhm an cumas carachtair leathana a shonrú go díreach in aitheantóirí ag baint úsáide as an ionchódú reatha (UTF-8 de réir réamhshocraithe) seachas nodaireacht UCN (\uNNNN nó \UNNNNNNN). Mar shampla:

    const statach int π = 3;
    int get_naïve_pi() {
    filleadh π;
    }

  • Maidir leis an teanga C, tá cuid de na gnéithe nua a forbraíodh laistigh den chaighdeán C2X curtha i bhfeidhm (cumasaithe ag sonrú -std=c2x agus -std=gnu2x): tá tacaíocht don chomhréir “[[]]” le feiceáil chun tréithe a shainiú mar atá i C++ (mar shampla, [[gnu ::const]], [[deprecated]], [[fallthrough]] agus [[b'fhéidir_unused]]. Tacaíocht bhreise do chomhréir "u8" chun tairisigh le carachtair UTF-8 a shainmhíniú.
    Macraí nua curtha le . Cuireadh ionadaí "%OB" agus "%Ob" le ham strf.

  • Is é "-fno-common" an modh réamhshocraithe le haghaidh C, rud a cheadaíonn rochtain níos éifeachtaí ar athróga domhanda ar ardáin áirithe.
  • I gcás C++, tá thart ar 16 athrú agus nuálaíocht curtha i bhfeidhm, arna bhforbairt i gcaighdeán C++20. Lena n-áirítear an eochairfhocal breise “constinit”
    agus tá tacaíocht le haghaidh síntí teimpléid curtha i bhfeidhm"coincheapa“. Ligeann coincheapa duit sraith de cheanglais pharaiméadar teimpléid a shainiú a chuireann teorainn, ag am tiomsaithe, leis an sraith argóintí ar féidir glacadh leo mar pharaiméadair teimpléid. Is féidir na coincheapa a úsáid chun neamhréireachtaí loighciúla a sheachaint idir airíonna na gcineálacha sonraí a úsáidtear laistigh den teimpléad agus airíonna cineál sonraí na bparaiméadar ionchuir.

  • Soláthraíonn G++ iompraíocht neamhshainithe a bhrath de bharr réada tairiseacha a athrú trí constexpr. Ídiú cuimhne laghdaithe ag an tiomsaitheoir agus constexpr á ríomh. Cuireadh rabhaidh nua "-Wmismatched-tags" agus "-Wredundant-tags" leis.
  • Tá roghanna nua orduithe molta:
    • "-fallocation-dce" chun péirí oibreoirí "nua" agus "scrios" nach bhfuil gá leo a bhaint.
    • "-fprofile-partial-training" chun leas iomlán a bhaint as méid a dhíchumasú le haghaidh cód nach bhfuil reáchtáil oiliúna ann.
    • "-fprofile-atáirgthe chun leibhéal in-atáirgthe próifíle a rialú.
    • "-fprofile-prefix-path" chun an t-eolaire tógála bunfhoinse a úsáidtear chun próifíl ar leith a ghiniúint (le haghaidh "-fprofile-generate=profile_dir" agus "-fprofile-use=profile_dir" a shainiú).
  • Sa téacs rabhaidh do na roghanna atá luaite, soláthraítear hipearnaisc a ligeann duit dul chuig doiciméadú na roghanna seo. Rialaítear ionadú URL ag baint úsáide as an rogha "-fdiagnostics-urls".
  • Cuireadh oibreoir réamhphróiseálaí leis"_tá_builtin", ar féidir a úsáid chun seiceáil le haghaidh feidhmeanna ionsuite.
  • Cuireadh feidhm ionsuite nua "__builtin_roundeven" leis agus cuireadh i bhfeidhm an fheidhm shlánaithe atá sainmhínithe i sonraíocht ISO/IEC TS 18661, cosúil le "babhta", ach an chuid slánúcháin ar mó é ná 0.5 suas (go luach níos mó), níos lú ná 0.5 - síos (go nialas), agus cothrom le 0.5 - ag tosú ó phaireacht an leathdhigitigh.
  • Maidir le hailtireacht AArch64, tá tacaíocht don síneadh SVE2 curtha leis agus feabhsaíodh an tacaíocht do SVE (Síneadh Veicteoir Inscálaithe), lena n-áirítear tacaíocht bhreise d'fheidhmeanna agus do chineálacha SVE ACLE ionsuite, agus úsáid veicteora. Leathnaíodh an tacaíocht do LSE (Eisínteachtaí Córais Mhóra) agus TME (Síneadh Cuimhne Idirthurais). Cuireadh treoracha nua leis atá molta in Armv8.5-A agus Armv8.6-A, lena n-áirítear treoracha maidir le giniúint uimhreacha randamacha, slánú, nascadh clibeanna cuimhne,
    bfloat16 agus iolraithe maitrís. Cuireadh tacaíocht próiseálaí leis
    Cortex Lámh-A77,
    Arm Cortex-A76AE,
    Cortex Lámh-A65,
    Arm Cortex-A65AE,
    Arm Cortex-A34 agus
    Marvell ThunderX3.

  • Tacaíocht bhreise do ABI FDPIC (treoir feidhme 32-giotán) le haghaidh ARM64. Oibríochtaí slánuimhir 64-giotán a athdhearadh agus a bharrfheabhsú. Cuireadh tacaíocht LAP leis
    Cortex Lámh-A77,
    Arm Cortex-A76AE agus
    Cortex lámh-M35P. Tacaíocht leathnaithe do threoracha próiseála sonraí ACLE, lena n-áirítear 32-giotán SIMD, iolrú 16-giotán, uimhríocht latch, agus optimizations algartam DSP eile. Cuireadh tacaíocht turgnamhach leis do threoracha ACLE CDE (Custom Datapath Extension).

  • Feabhsaíodh go suntasach giniúint cód agus veicteoiriú san inneall do GPUanna AMD bunaithe ar an microarchitecture GCN.
  • Tacaíocht bhreise do ghléasanna cosúil le XMEGA don ailtireacht AVR
    ATtiny202, ATtiny204, ATtiny402, ATtiny404, ATtiny406, ATtiny804, ATtiny806, ATtiny807, ATtiny1604, ATtiny1606, ATtiny1607, ATmega808, ATmega809, ATmega1608, ATmega1609, ATmega3208 3209, ATmega4808 agus ATmega4809.

  • Cuireadh síneadh nua ailtireachta tacair treoracha Intel ENQCMD (-menqcmd) le haghaidh ailtireachtaí IA-32 / x86-64. Áirítear le tacaíocht bhreise do Intel Cooperlake (-march = cooperlake, an síneadh AVX512BF16 ISA) agus Tigerlake (-march = tigerlake, na síntí MOVDIRI, MOVDIR64B agus AVX512VP2INTERSECT ISA).
  • Tá cur i bhfeidhm HSAIL (Teanga Idirmheánach Ailtireachta an Chórais Ilchineálach) do chórais ríomhaireachta ilchineálacha bunaithe ar ailtireacht an HSA imithe i léig agus is dócha go mbainfear é i scaoileadh amach anseo.

Foinse: oscailtenet.ru

Add a comment