Te tukunga o te huinga whakahiato GCC 10

I muri i te tau o te whanaketanga whakaputaina te tukunga o te huinga whakahiato kore utu GCC 10.1, te tukunga nui tuatahi i roto i te peka hou GCC 10.x. E ai ki kaupapa hou tau tuku, putanga 10.0 i whakamahia i roto i te tukanga whanaketanga, a i mua tata i te tukunga o GCC 10.1, kua peka ke te peka GCC 11.0, i runga i te kaupapa o te tukunga nui e whai ake nei, GCC 11.1, ka hangaia.

He mea rongonui a GCC 10.1 mo te whakatinanatanga o te maha o nga mahi hou i roto i te reo C ++ i whakawhanakehia mo te paerewa C++ 20, nga whakapainga e pa ana ki te paerewa reo C a meake nei (C2x), nga arotautanga hou i roto i nga tuara whakahiato me te tautoko whakamatautau. aratau tātari pateko. I tua atu, i te wa e whakaritea ana he peka hou, ka whakawhitia e te kaupapa te rehitatanga mai i SVN ki Git.

Main huringa:

  • Kua tapirihia aratau whakamatautau mo te tātari pateko "-panalyzer“, e mahi ana i te tātari-a-raataunga-a-waahanga o nga huarahi mahi waehere me nga rerenga raraunga i roto i te kaupapa. Ka taea e te aratau te kite i nga raru i te wahanga whakahiato, penei i nga waea rua o te mahi kore utu() mo te waahi mahara kotahi, nga rerenga whakamaarama konae, te whakaheke me te tuku i nga tohu kore, te uru ki nga poraka mahara kua wetekina, te whakamahi i nga uara kore mohio, etc. Ko te whakamahi i te aratau hou mo te waehere OpenSSL kua taea te tautuhi whakaraeraetanga kino.
  • Kua pai ake nga arotautanga waenga. Ko te IPA-SRA (Interprocedural Scalar Shared Replacement) kua hoahoatia ano kia mahi i te wa here, a, i roto i era atu mea, ka tango i nga uara kua oti te tatau me te whakahoki mai. I roto i te aratau arotautanga "-O2", ka taea te kowhiringa "-finline-functions", ka whakahouhia kia pai ake te waehere kiato ki runga i nga mahi mahi. Kua whakaterehia te mahi a te heuristic mo te tuku mahi roraina. Ka taea e te whakawhänui-a-raina me te whakakorikori mahi heuristics te whakamahi i nga korero mo nga awhe uara hei matapae i te whai huatanga o nga huringa takitahi. Mo te C ++, kua pai ake te tika o te momo-momo korero.
  • Te Whakapai ake i nga Whakaritenga Waa Hononga (LTO). Kua taapirihia he kawenga hou lto-putunga ki te tautuhi i nga korero mo nga konae ahanoa me te LTO bytecode. Ko nga paahitanga LTO whakarara ka whakatau aunoa i te maha o nga mahi hanga i te wa kotahi, a, ki te kore e taea te whakatau, whakamahia nga korero mo te maha o nga matua CPU hei take whakarara. Kua taapirihia te kaha ki te kopiri LTO bytecode ma te whakamahi i te zstd algorithm.
  • Ko te tikanga arotautanga i runga i nga hua o te tohu tohu (PGO - Profile-guided optimization) kua pai ake, e whakaputa ana i te waehere tino pai ake i runga i te tātaritanga o nga ahuatanga o te mahi waehere. He pai ake te tiaki i nga korero i te wa e whakahiato ana me te wehenga tohu wera/matao. Ma te whiringa "-fprofile-uara» ka taea e ia te aroturuki ake ki te 4 nga uara kōtaha, hei tauira mo nga waea autaki me te whakarato i nga korero moohio tika.
  • Kua whakatinanahia te whakatakotoranga whakarara mo nga reo C, C++ me Fortran OpenACC 2.6, e tautuhi ana i nga taputapu mo te whakaheke i nga mahi i runga i nga GPU me nga tukatuka motuhake penei i te NVIDIA PTX. Kua tata oti te whakatinanatanga o te paerewa WhakatuwheraMP 5.0 (Tukatuka Maha-Tukatuka), e tautuhi ana i te API me nga tikanga mo te whakamahi tikanga whakarara i nga tikanga whakarara i runga i nga punaha maha-matua me te ranu (CPU+GPU/DSP) me te tiritiri mahara me nga waeine vectorization (SIMD). Ko nga waahanga taapiri penei i nga herenga motuhake, nga tohu karapa me te kopikopiko, te ota me te whakamahi_device_addr kii. Mo OpenMP me OpenACC, kua taapirihia te tautoko mo nga mahi whakaheke i runga i nga reanga tuawha (Fiji) me nga reanga tuarima o nga GPU AMD Radeon (GCN) (VEGA 10/VEGA 20).
  • Mo nga reo o te whanau C, kua taapirihia te mahi "whakauru" ki te whakaahua i te urunga o te mahi ki nga taonga i tukuna e te tohutoro, i te tohutoro ranei, me te hono atu i aua taonga ki nga tautohetohe tauoti kei roto nga korero mo te rahi o nga taonga. Hei mahi tahi me te "whakauru", ka whakatinanahia te huanga "momo" ki te kite i te urunga he mai i nga mahi a nga kaiwhakamahi, hei tauira, i te wa e tuhi ana i nga uara ki tetahi waahi kei waho o nga rohe o te raupapa. He taapiri ano ko te huanga "symver" ki te hono i nga tohu i roto i te konae ELF me nga tau putanga motuhake.
  • Kua taapirihia nga whakatupato hou:
    • "-Wstring-compare" (whakahohea me te "-Wextra") - he whakatupato mo te noho mai o nga korero ka whakatauritehia te kore ki te hua o te karanga i nga mahi strcmp me te strncmp, he rite ki te taumau na te mea ko te roa o te tohenga kotahi he nui ake i te rahi o te huinga o te tohenga tuarua.
    • "-Wzero-roa-rohe" (whakahohe me "-Warray-rohe") - he whakatupato mo te uru ki nga huānga huānga o te kore te roa, tera pea ka tuhirua i etahi atu raraunga.
    • Ko nga whakatupato "-Warray-bounds", "-Wformat-overflow", "-Wrestrict", "-Wreturn-local-addr" me "-Wstringop-overflow" kua whakawhänuihia ki te whakarahi i te maha o nga waahi-waho. e whakahaerea ana.
  • I whakatinanahia te kaha ki te tautuhi tika i nga tohu whanui i roto i nga kaitautuhi ma te whakamahi i te whakawaehere onāianei (UTF-8 taunoa) kaua ki te tuhi UCN (\uNNNN, \UNNNNNNNNN ranei). Hei tauira:

    pūmau pūmau int π = 3;
    int get_naïve_pi() {
    hoki π;
    }

  • Mo te reo C, kua whakatinanahia tetahi waahanga o nga ahuatanga hou i whakawhanakehia i roto i te paerewa C2X (whakahohehia ma te tohu -std=c2x me -std=gnu2x): kua puta te tautoko mo te "[[]]" mo te tautuhi i nga huanga penei i roto C++ (hei tauira, [[gnu ::const]], [[kua whakakorehia]], [[hinga]] me [[pea_kaore i whakamahia]]. He tautoko taapiri mo te wetereo "u8" mo te tautuhi i nga taumau me nga tohu UTF-8.
    Kua taapirihia nga tonotono hou ki . Kua taapirihia nga whakakapinga "%OB" me "%Ob" ki te strftime.

  • Ko te aratau taunoa mo C ko te "-fno-common", e taea ai te uru pai ake ki nga taurangi o te ao i runga i etahi papa.
  • Mo C++, tata ki te 16 nga huringa me nga mahi hou kua whakatinanahia, i whakawhanakehia i roto i te paerewa C++ 20. Me te kupu matua taapiri "consinit"
    me te tautoko mo nga taapiri tauira kua whakatinanahia "ariā". Ma nga ariā ka taea e koe te tautuhi i te huinga whakaritenga tawhā tauira, i te wa whakahiato, ka whakawhāiti i te huinga tohenga ka whakaaetia hei tawhā tauira. Ka taea te whakamahi i nga ariā hei karo i nga taupatupatu arorau i waenga i nga ahuatanga o nga momo raraunga e whakamahia ana i roto i te tauira me nga ahuatanga momo raraunga o nga tawhā whakauru.

  • Ka whakarato a G++ i te kitenga o te whanonga kore i tautuhia i puta mai i te whakarereketanga o nga mea tuturu ma te constexpr. He iti ake te kai mahara a te kaitoi i te wa e tatau ana i te constexpr. Kua taapirihia nga whakatupato hou "-Wmismatched-tags" me "-Wredundant-tags".
  • Kua tohua nga whiringa raina whakahau hou:
    • "-fallocation-dce" ki te tango takirua koretake o "hou" me te "muku" kaiwhakahaere.
    • "-fprofile-partial-training" ki te whakakore i te arotautanga rahi mo te waehere kaore he oma whakangungu.
    • "-fprofile-reproducible ki te whakahaere i te taumata o te reproducibility kōtaha.
    • "-fprofile-prefix-path" ki te tautuhi i te whaiaronga hanga puna turanga e whakamahia ana mo te whakaputanga korero motuhake (mo "-fprofile-generate=profile_dir" me "-fprofile-use=profile_dir").
  • I roto i te tuhinga whakatupato mo nga whiringa kua whakahuahia, ka whakaratohia nga honongaitua e taea ai e koe te haere ki nga tuhinga mo enei whiringa. Ka whakahaeretia te whakakapinga URL ma te whakamahi i te "-fdiagnostics-urls" kōwhiringa.
  • Kua taapirihia he kaiwhakahaere tukatuka mua "__kua_hanga", ka taea te whakamahi ki te tirotiro mo nga mahi whakauru.
  • Kua taapirihia he mahi hou "__builtin_roundeven" me te whakatinanatanga o te mahi porowhita kua tautuhia i roto i te whakaritenga ISO/IEC TS 18661, he rite ki te "porowhita", engari he waahanga porotaka nui ake i te 0.5 ki runga (ki te uara nui ake), iti iho i te 0.5 - ki raro (ki te kore), me te rite ki te 0.5 - timata mai i te parenga o te mati tuaiti.
  • Mo te hoahoanga AArch64, kua taapirihia te tautoko mo te toronga SVE2 me te tautoko mo te SVE (Scalable Vector Extension) kua pai ake, tae atu ki te tautoko taapiri mo nga mahi me nga momo SVE ACLE kua hangaia, me te whakamahi i te vectorization. Kua whakawhänuihia te tautoko mo te LSE (Whakaaronga Pūnaha Nui) me te TME (Transactional Memory Extension). Kua taapirihia nga tohutohu hou e whakaarohia ana i Armv8.5-A me Armv8.6-A, tae atu ki nga tohutohu mo te whakatipu tau matapōkere, te whakaawhiwhi, te here tohu mahara,
    bfloat16 me te whakareatanga matrix. He tautoko pūtukatuka taapiri
    Arm Cortex-A77,
    Arm Cortex-A76AE,
    Arm Cortex-A65,
    Arm Cortex-A65AE,
    Arm Cortex-A34 me
    Miharo ThunderX3.

  • He tautoko taapiri mo te ABI FDPIC (tohu mahi moka-32) mo te ARM64. I hoahoatia ano, kua arotautia hoki te tukatuka o nga mahinga tauoti 64-bit. Kua taapirihia te tautoko CPU
    Arm Cortex-A77,
    Arm Cortex-A76AE me
    Arm Cortex-M35P. Te tautoko i whakawhānuihia mo nga tohutohu tukatuka raraunga ACLE, tae atu ki te 32-bit SIMD, 16-bit whakareatanga, te tatau tatau, me etahi atu DSP algorithm arotautanga. Kua taapirihia he tautoko whakamatautau mo nga tohutohu ACLE CDE (Torohanga Ara Raraunga Ritenga).

  • I tino pai ake te whakaputanga waehere me te vectorization i te tuara mo nga GPU AMD i runga i te GCN microarchitecture.
  • He tautoko taapiri mo nga taputapu rite-XMEGA mo te hoahoanga AVR
    ATtiny202, ATtiny204, ATtiny402, ATtiny404, ATtiny406, ATtiny804, ATtiny806, ATtiny807, ATtiny1604, ATtiny1606, ATtiny1607, ATmega808, ATmega809, ATmega1608, ATmega1609, ATmega3208 3209, ATmega4808 me ATmega4809.

  • He toronga hoahoanga huinga tohutohu Intel ENQCMD hou (-menqcmd) kua taapirihia mo nga hoahoanga IA-32/x86-64. He tautoko taapiri mo Intel Cooperlake (-march=cooperlake, kei roto ko te toronga AVX512BF16 ISA) me te Tigerlake (-march=tigerlake, kei roto ko nga PTM MOVDIRI, MOVDIR64B me AVX512VP2INTERSECT ISA).
  • Ko te whakatinanatanga o te HSAIL (Heterogenous System Architecture Intermediate Language) mo nga punaha rorohiko rereke i runga i te hoahoanga HSA kua whakakorehia, ka tangohia pea i roto i te tukunga a muri ake nei.

Source: opennet.ru

Tāpiri i te kōrero