Ho lokolloa ha GCC 10 compiler suite

Kamora selemo sa ntshetsopele e phatlalalitsoeng tokollo ya sete ya mahala ya bakopanyi GCC 10.1, tokollo ea pele e kholo lekaleng le lecha la GCC 10.x. Ho latela leano le lecha Linomoro tsa tokollo, mofuta oa 10.0 o ile oa sebelisoa nakong ea ts'ebetso ea nts'etsopele, 'me nakoana pele ho lokolloa ha GCC 10.1, lekala la GCC 11.0 le ne le se le theohile, motheong oa hore tokollo e latelang ea bohlokoa, GCC 11.1, e tla thehoa.

GCC 10.1 e hlokomeleha bakeng sa ho kenngwa tshebetsong ha mahlale a mangata ka puo ya C++ e ntlafalitsoeng bakeng sa maemo a C++20, lintlafatso tse amanang le maemo a tlang a puo ea C (C2x), lintlafatso tse ncha ho li-backend tsa compiler le tšehetso ea liteko. static analysis mode. Ho feta moo, nakong ea tokisetso ea lekala le lecha, morero o ile oa fetisetsa polokelo ho tloha SVN ho ea Git.

ka sehloohong fetola:

  • E kentsoe mokhoa oa liteko oa tlhahlobo e tsitsitseng "- fana ka maikutlo", e etsang tlhahlobo e tebileng ea lisebelisoa tsa mekhoa ea ts'ebetso ea khoutu le phallo ea data lenaneong. Mokhoa o khona ho bona mathata mothating oa ho kopanya, joalo ka mehala e habeli ho ea mahala() ts'ebetso bakeng sa sebaka se le seng sa memori, ho lutla ha tlhaloso ea faele, ho nyenyefatsa le ho fetisa lintlha tse se nang thuso, ho fihlella li-blocks tse lokolotsoeng, ho sebelisa litekanyetso tse sa tsejoeng, jj. Tšebeliso ea mokhoa o mocha oa khoutu ea OpenSSL e se e entse hore ho khonehe ho khetholla bofokodi bo kotsi.
  • Lintlafatso tse ntlafalitsoeng tsa mekhoa e fapaneng. Phase ea IPA-SRA (Interprocedural Scalar Shared Replacement) e hlophisitsoe bocha hore e sebetse ka nako e tlamang 'me, har'a tse ling, joale e tlosa boleng ba khomphutha le ho khutlisa boleng bo sa sebelisoeng. Ka mokhoa oa "-O2" oa ho ntlafatsa, khetho ea "-finline-functions" e ea lumelloa, e khutlisetsoang molemong oa ho khetha khoutu e kopaneng ho feta ts'ebetso ea ts'ebetso. Mosebetsi oa heuristic bakeng sa ts'ebetso ea inline o potlakisitsoe. Katoloso ea inline le tšebetso ea cloning heuristics joale e ka sebelisa tlhahisoleseling mabapi le mekhahlelo ea boleng ho bolela esale pele katleho ea liphetoho tsa motho ka mong. Bakeng sa C++, ho nepahala ha mofuta oa alias parsing ho ntlafalitsoe.
  • Ntlafatso ea Lintlafatso tsa Nako ea Khokahano (LTO). E kenyellelitsoe tse ncha tse phethiloeng lahla ho seta bocha tlhahisoleseling mabapi le lifaele tsa ntho ka LTO bytecode. Parallel LTO e feta e ikhethela palo ea mesebetsi e sebetsang ka nako e le 'ngoe,' me haeba e ke ke ea tsebahatsoa, ​​​​sebelisa tlhahisoleseling mabapi le palo ea li-cores tsa CPU joalo ka ntho e tšoanang. E kentse bokhoni ba ho hatella LTO bytecode ho sebelisa algorithm ea zstd.
  • Mokhoa oa ho ntlafatsa o ipapisitse le liphetho tsa profiling ea khoutu (PGO - Profil-guided optimization) e ntlafalitsoe, e hlahisang khoutu e nepahetseng haholoanyane e ipapisitseng le tlhahlobo ea litšobotsi tsa ts'ebetso ea khoutu. Tlhokomelo e ntlafalitsoeng ea profil nakong ea ho kopanya le karohano ea khoutu e chesang / e batang. Ka khetho "-fprofile-boleng»ha joale e khona ho beha leihlo boleng ba profil ea 4, mohlala bakeng sa mehala e sa tobang le ho fana ka tlhaiso-leseling e nepahetseng haholoanyane.
  • Litlhaloso tse tšoanang tsa mananeo tse kentsoeng tšebetsong bakeng sa lipuo tsa C, C++ le Fortran OpenACC 2.6, e hlalosang lisebelisoa tsa ho theola ts'ebetso ho li-GPU le li-processor tse khethehileng tse kang NVIDIA PTX. Ho kenngwa tshebetsong ha maemo ho se ho batla ho phethehile Bula MP 5.0 (Open Multi-Processing), e hlalosang API le mekhoa ea ho sebelisa mekhoa ea mananeo a tšoanang ho li-multi-core le hybrid (CPU + GPU / DSP) tse nang le likarolo tse arolelanoang tsa memori le vectorization (SIMD). Likarolo tse ekelitsoeng joalo ka maemo a ho qetela, li-scan le loop directives, order and use_device_addr expressions. Bakeng sa OpenMP le OpenACC, tšehetso e kenyelelitsoe bakeng sa ts'ebetso ea ho theola moloko oa bone (Fiji) le li-GPU tsa AMD Radeon (GCN) tsa moloko oa bohlano (VEGA 10/VEGA 20).
  • Bakeng sa lipuo tsa lelapa la C, mosebetsi oa "phihlello" o kentsoe ho hlalosa phihlello ea ts'ebetso ea lintho tse fetisitsoeng ka referense kapa pointer, le ho hokahanya lintho tse joalo le lintlha tse felletseng tse nang le tlhaiso-leseling ka boholo ba lintho. Ho sebetsa 'moho le "phihlello", "mofuta" o sebelisoa ho bona phihlello e fosahetseng ho tsoa mesebetsing ea mosebelisi, mohlala, ha o ngola boleng sebakeng se kantle ho meeli ea sehlopha. Ho boetse ho eketsoa ke "symver" tšobotsi ea ho hokahanya matšoao faeleng ea ELF e nang le linomoro tsa mofuta o itseng.
  • Litemoso tse ncha li kentsoe:
    • "-Wstring-compare" (e nolofalitsoe le "-Wextra") - e lemosa ka boteng ba lipolelo tseo zero e bapisoang le sephetho sa ho bitsa mesebetsi ea strcmp le strncmp, e lekanang le kamehla ka lebaka la hore bolelele khang e le 'ngoe e kholo ho feta boholo ba lethathamo la khang ea bobeli .
    • "-Wzero-length-bounds" (e nolofalitsoe ka "-Warray-bounds") - e lemosa ka ho fihlella likarolo tse ngata tsa bolelele ba zero, tse ka lebisang ho hlakola lintlha tse ling.
    • Litemoso tsa "-Warray-overflow", "-Wformat-overflow", "-Wrestrict", "-Wreturn-local-addr" le "-Wstringop-overflow" li atolositsoe ho atolosa palo ea maemo a ka ntle ho meeli. tse tšoaroang.
  • E kentse bokhoni ba ho hlakisa litlhaku tse pharalletseng ka kotloloho ho li-identifiers ho sebelisa khouto ea hajoale (UTF-8 ka kamehla) ho fapana le notation ea UCN (\uNNNN kapa \UNNNNNNNNN). Ka mohlala:

    static const int π = 3;
    int get_naïve_pi() {
    khutla π;
    }

  • Bakeng sa puo ea C, karolo ea likarolo tse ncha tse ntlafalitsoeng ka har'a maemo a C2X e kentsoe ts'ebetsong (e nolofalitsoe ka ho hlakisa -std=c2x le -std=gnu2x): tšehetso bakeng sa "[[]]" syntax e hlahile bakeng sa ho hlalosa litšobotsi joalo ka ho. C++ (mohlala, [[gnu ::const]], [[deprecated]], [[fallthrough]] le [[mohlomong_e sa sebelisoe]]. Tšehetso e ekelitsoeng bakeng sa syntax ea "u8" bakeng sa ho hlalosa mantsoe a feto-fetohang a nang le litlhaku tsa UTF-8.
    E kentse li-macros tse ncha ho . "%OB" le "% Ob" e kenyellelitsoe ho strftime.

  • Mokhoa oa kamehla oa C ke "-fno-common", o lumellang phihlello e nepahetseng haholoanyane ea mefuta-futa ea lefats'e ho li-platform tse ling.
  • Bakeng sa C ++, hoo e ka bang liphetoho tse 16 le mekhoa e mecha e kentsoe ts'ebetsong, e ntlafalitsoeng ka mokhoa oa C ++20. Ho kenyeletsoa lentsoe la sehlooho "constit"
    'me tšehetso ea li-extensions tsa template e kentsoe tšebetsong "likhopolo". Likhopolo li u lumella ho hlalosa sete ea litlhoko tsa paramethara ea template eo, ka nako ea ho bokella, e fokotsang sete ea likhang tse ka amoheloang e le litekanyetso tsa template. Likhopolo li ka sebelisoa ho qoba ho se lumellane ho utloahalang pakeng tsa thepa ea mefuta ea data e sebelisoang ka har'a template le thepa ea mofuta oa data ea litekanyetso tsa ho kenya.

  • G++ e fana ka ho lemoha boitšoaro bo sa hlalosoang bo bakoang ke ho fetola lintho tse sa khaotseng ka constexpr. Ho fokotsa tšebeliso ea memori ke moqapi ha a bala constexpr. E kentse litemoso tse ncha "-Wmismatched-tags" le "-Wredundant-tags".
  • Likhetho tse ncha tsa mola oa taelo li hlahisitsoe:
    • "-fallocation-dce" ho tlosa lipara tse sa hlokahaleng tsa "ncha" le "delete" operator.
    • "-fprofile-partial-training" ho thibela katoloso ea boholo bakeng sa khoutu e se nang koetliso.
    • "-fprofile-reproducible ho laola boemo ba ho ikatisa ha profil.
    • "-fprofile-prefix-path" ho hlalosa mohloli oa motheo oa ho haha ​​​​mohloli o sebelisoang bakeng sa tlhahiso ea boemo bo arohaneng (bakeng sa "-fprofile-generate=profile_dir" le "-fprofile-use=profile_dir").
  • Temaneng ea temoso bakeng sa likhetho tse boletsoeng, ho fanoe ka li-hyperlink tse u lumellang ho ea litokomaneng tsa likhetho tsena. Phatlalatso ea URL e laoloa ho sebelisoa khetho ea "-fdiagnostics-urls".
  • E kenyellelitse "preprocessor operator"__e_e ahile", e ka sebelisoang ho lekola mesebetsi e hahelletsoeng.
  • E kentse ts'ebetso e ncha e hahelletsoeng "__builtin_roundeven" ka ts'ebetsong ea ts'ebetso ea ho potoloha e hlalositsoeng ho ISO/IEC TS 18661, e ts'oanang le "round", empa e potoloha karolo e kholo ho feta 0.5 ho ea holimo (ho ea ho boleng bo boholo), ka tlase ho 0.5 - tlase (ho ea ho zero), 'me e lekana le 0.5 - ho qala ho tloha boemong ba palo ea penultimate.
  • Bakeng sa meralo ea AArch64, tšehetso bakeng sa katoloso ea SVE2 e ekelitsoe mme tšehetso ea SVE (Scalable Vector Extension) e ntlafalitsoe, ho kenyeletsoa tšehetso e eketsehileng bakeng sa mesebetsi le mefuta ea SVE ACLE e hahelletsoeng, le ts'ebeliso ea vectorization. Tšehetso bakeng sa LSE (Liatoloso tse kholo tsa Sistimi) le TME (Transactional Memory Extension) e atolositsoe. E kentse litaelo tse ncha tse hlahisitsoeng ho Armv8.5-A le Armv8.6-A, ho kenyeletsoa litaelo tsa tlhahiso ea linomoro tse sa reroang, ho pota-pota, ho tlama tag ea memori,
    bfloat16 le katiso ea matrix. Ts'ehetso ea processor e ekelitsoeng
    Arm Cortex-A77,
    Arm Cortex-A76AE,
    Arm Cortex-A65,
    Arm Cortex-A65AE,
    Arm Cortex-A34 le
    Marvell ThunderX3.

  • Tšehetso e ekelitsoeng bakeng sa ABI FDPIC (32-bit function pointers) bakeng sa ARM64. E hlophisitsoe bocha le ho ntlafala ts'ebetso ea 64-bit integer. Ts'ehetso ea CPU e ekelitsoeng
    Arm Cortex-A77,
    Arm Cortex-A76AE le
    Arm Cortex-M35P. Ts'ehetso e atolositsoeng bakeng sa litaelo tsa ts'ebetso ea data ea ACLE, ho kenyeletsoa 32-bit SIMD, 16-bit katiso, latch arithmetic, le lisebelisoa tse ling tsa algorithm ea DSP. E kentse tšehetso ea liteko bakeng sa litaelo tsa ACLE CDE (Custom Datapath Extension).

  • Ho hlahisa khoutu e ntlafalitsoeng haholo le vectorization ka morao bakeng sa li-GPU tsa AMD tse ipapisitseng le meralo e menyenyane ea GCN.
  • Tšehetso e ekelitsoeng bakeng sa lisebelisoa tse kang XMEGA bakeng sa meralo ea AVR
    ATtiny202, ATtiny204, ATtiny402, ATtiny404, ATtiny406, ATtiny804, ATtiny806, ATtiny807, ATtiny1604, ATtiny1606, ATtiny1607, ATmega808, ATmega809, ATmega1608mega1609 ATmega3208 ATmega3209 mega4808 le ATmega4809.

  • Ho kentsoe katoloso e ncha ea meralo ea meralo ea Intel ENQCMD (-menqcmd) bakeng sa meralo ea meralo ea IA-32/x86-64. Tšehetso e ekelitsoeng bakeng sa Intel Cooperlake (-march=cooperlake, e kenyelletsa AVX512BF16 ISA extension) le Tigerlake (-march=tigerlake, e kenyelletsa MOVDIRI, MOVDIR64B le AVX512VP2INTERSECT ISA extensions) CPUs.
  • Ho kenngwa tshebetsong ha HSAIL (Heterogeneous System Architecture Intermediate Language) bakeng sa ditsamaiso tse fapaneng tsa khomphutha tse ipapisitseng le meralo ya HSA e tlositswe mme mohlomong e tla tloswa tokollong e tlang.

Source: opennet.ru

Eketsa ka tlhaloso