Fa'asa'olotoina o le GCC 10 fa'apipi'i seti

Ina ua mavae se tausaga o atinae lomia fa'asa'olotoina o se seti fua o fa'aputuga GCC 10.1, o le faʻasalalauga tele muamua i le lala fou GCC 10.x. E tusa ai ma polokalame fou numera faʻamalolo, faʻamatalaga 10.0 na faʻaaogaina i le faagasologa o le atinaʻeina, ma e leʻi leva ona tuʻuina atu le GCC 10.1, o le GCC 11.0 lala ua uma ona faʻaulu, i luga o le faʻavae o le a faʻavaeina le isi faʻasalalauga taua, GCC 11.1.

GCC 10.1 e iloga mo le faʻatinoina o le tele o faʻafouga i le gagana C ++ ua atiaʻe mo le tulaga C ++ 20, faʻaleleia atili e fesoʻotaʻi ma le gagana C i le lumanaʻi (C2x), faʻataʻitaʻiga fou i tua o le tuʻufaʻatasiga ma le faʻataʻitaʻiga lagolago. faiga su'esu'e fa'amau. E le gata i lea, i le taimi o le sauniuniga o se lala fou, na faʻafeiloaʻi e le poloketi le fale teu oloa mai le SVN i Git.

tele suiga:

  • Faʻaliliuga faiga fa'ata'ita'i o su'esu'ega fa'amau "-fanalyzer", lea e faʻatino ai le suʻesuʻeina o fesoʻotaʻiga faʻapitoa o ala faʻatinoina o tulafono ma faʻamaumauga o loʻo tafe i totonu o se polokalame. O le auala e mafai ona iloa ai faʻafitauli i le tuʻufaʻatasiga tulaga, e pei o le faaluaina o le telefoni i le free() galuega mo le tasi vaega manatua, faʻamatalaga faila leaks, dereferencing ma pasi null pointers, faʻafeiloaʻi poloka manatua saoloto, faʻaaogaina tulaga taua, ma isi. O le fa'aogaina o le faiga fou mo le OpenSSL code ua uma ona mafai ona iloa tulaga lamatia matautia.
  • Fa'aleleia atili fa'ata'ita'iga va'aiga. O le pasi IPA-SRA (Interprocedural Scalar Shared Replacement) ua toe fa'atulagaina e galue i le taimi o le fusifusia ma, faatasi ai ma isi mea, ua aveese nei tau fa'atatau ma toe fa'afo'i le fa'aaogaina. I le "-O2" optimization mode, o le "-finline-functions" e mafai ona faʻaogaina, lea e toe faʻafoʻi e sili atu le faʻaogaina o code nai lo le faʻatinoga o le faʻatinoga. Ua faatelevaveina le galuega a le heuristic mo le fa'atinoina o galuega i totonu. E mafai nei ona fa'aoga fa'amatalaga e uiga i tulaga taua e va'ai ai le aoga o suiga ta'ito'atasi. Mo C ++, ua faʻaleleia atili le saʻo o le faʻavasegaina o igoa faʻavae.
  • Fa'asilisiliina ole taimi feso'ota'iga (LTO). Fa'aopoopoina le fa'atinoina fou lto-lafoa'i e toe setiina faamatalaga e uiga i faila mea faitino i le LTO bytecode. Fa'ata'ita'iga LTO pasi e otometi lava ona fuafua le aofa'i o galuega fa'atino i le taimi e tasi ma, afai e le mafai ona fa'amauina, fa'aaoga fa'amatalaga e uiga i le aofa'i o pusa o le CPU e fai ma fa'atusatusaga. Faʻaopoopo le gafatia e faʻapipiʻi le LTO bytecode e faʻaaoga ai le zstd algorithm.
  • O le faʻaogaina o masini e faʻavae i luga o taunuʻuga o le faʻasologa o code (PGO - Profile-guided optimization) ua faʻaleleia, lea e maua ai le code sili ona lelei e faʻavae i luga o se auiliiliga o uiga o le faʻatinoina o tulafono. Faʻaleleia le tausiga o faʻamatalaga i le taimi o le tuʻufaʻatasia ma le vavaeeseina o le vevela / malulu. E ala i le filifiliga "-fprofile-taua»e mafai nei ona mata'ituina le o'o atu i le 4 fa'amatalaga fa'atatau, mo se fa'ata'ita'iga mo telefoni fa'apitoa ma tu'uina atu fa'amatalaga sa'o lelei.
  • Fa'ata'ita'iga polokalame fa'atusa fa'atino mo gagana C, C++ ma Fortran OpenACC 2.6, o loʻo faʻamatalaina meafaigaluega mo le faʻaaogaina o gaioiga i GPU ma faʻapitoa faʻapitoa e pei ole NVIDIA PTX. O le faʻatinoga o le faʻataʻitaʻiga e toetoe lava a maeʻa Tatala le MP 5.0 (Open Multi-Processing), o loʻo faʻamatalaina le API ma metotia o le faʻaogaina o auala faʻapipiʻi tutusa i luga o le tele-core ma hybrid (CPU + GPU / DSP) faiga faʻatasi ma le faʻasoa faʻatasi ma iunite vectorization (SIMD). Fa'aopoopo mea fa'apitoa e pei o tu'utu'uga tu'utasi mulimuli, fa'ata'ita'iga fa'ata'ita'i ma ta'avale, fa'atonuga ma fa'aoga_device_addr fa'amatalaga. Mo OpenMP ma OpenACC, ua fa'aopoopoina le lagolago mo le fa'auluina o galuega i le fa-tupulaga (Fiti) ma le lima-tupulaga AMD Radeon (GCN) GPUs (VEGA 10/VEGA 20).
  • Mo gagana a le aiga C, o le "avanoa" galuega ua faʻaopoopoina e faʻamatala ai le avanoa o le galuega i mea faitino na pasia e le faʻamatalaga poʻo le faʻailoga, ma faʻafesoʻotaʻi ia mea ma finauga faʻatasi o loʻo i ai faʻamatalaga e uiga i le tele o mea. Ina ia galulue faʻatasi ma le "avanoa", o le uiga "ituaiga" e faʻatinoina e iloa ai le le saʻo o avanoa mai galuega a tagata faʻaoga, mo se faʻataʻitaʻiga, pe a tusia tulaga taua i se vaega i fafo atu o tuaoi o le laina. E fa'aopoopoina fo'i le uiga o le "symver" e fa'afeso'ota'i fa'ailoga i se faila ELF fa'atasi ai ma numera fa'amatalaga patino.
  • Lapataiga fou ua faaopoopo:
    • "-Wstring-faʻatusatusa" (faʻaogaina ma le "-Wextra") - lapatai e uiga i le i ai o faʻamatalaga e faʻatusatusa ai le zero ma le taunuuga o le valaʻau o le strcmp ma strncmp galuega, lea e tutusa ma le tumau ona o le mea moni o le umi o le tasi finauga e sili atu nai lo le tele o le array i le finauga lona lua.
    • "-Wzero-length-bounds" (fa'aogaina i le "-Warray-bounds") - lapata'i e uiga i le fa'aogaina o elemene elemene ole umi ole umi, lea e ono o'o atu ai i le soloia o isi fa'amatalaga.
    • O lapataiga "-Warray-bounds", "-Wformat-overflow", "-Wrestrict", "-Wreturn-local-addr" ma le "-Wstringop-overflow" ua faʻalauteleina e faʻalautele le numera o tulaga i fafo atu o tuaoi. o loo taulimaina.
  • Fa'atino le tomai e fa'amaoti sa'o ai mata'itusi lautele i fa'amatalaga e fa'aaoga ai le fa'ailoga o lo'o iai nei (UTF-8 e le mafai) nai lo le fa'ailoga UCN (\uNNNN po'o \UNNNNNNNNN). Faataitaiga:

    static const int π = 3;
    int get_naïve_pi() {
    toe fo'i π;
    }

  • Mo le gagana C, o se vaega o foliga fou ua atiaʻe i totonu o le C2X standard ua faʻatinoina (faʻamalosia e ala i le faʻamaonia -std=c2x ma -std=gnu2x): lagolago mo le "[[]]" syntax ua aliali mai mo le faʻamalamalamaina o uiga e pei o le C++ (mo se fa'ata'ita'iga, [[gnu ::const]], [[fa'ate'aina]], [[fallthrough]] ma [[maybe_unused]]. Fa'aopoopo le lagolago mo le "u8" syntax mo le fa'amalamalamaina o mea tumau ma mataitusi UTF-8.
    Faaopoopo macros fou i . Fa'aopoopoina le "%OB" ma le "%Ob" i le strftime.

  • O le fa'aoga masani mo C o le "-fno-common", lea e mafai ai ona sili atu le lelei o avanoa i fesuiaiga o le lalolagi i luga o nisi tulaga.
  • Mo C ++, e tusa ma le 16 suiga ma faʻafouga ua faʻatinoina, faʻavae i le C ++ 20 tulaga. E aofia ai le upu fa'aopoopo "consinit"
    ma le lagolago mo faʻaopoopoga faʻataʻitaʻiga ua faʻatinoina "manatu". O manatu fa'ataga e fa'ataga ai oe e fa'amatala se seti o fa'ata'ita'iga fa'ata'ita'iga mana'omia e, i le taimi fa'aopoopo, fa'atapula'a le seti o finauga e mafai ona talia e fai ma fa'ata'ita'iga fa'ata'ita'iga. E mafai ona fa'aoga manatu e aloese ai mai le fetaui lelei i le va o meatotino o ituaiga fa'amatalaga o lo'o fa'aogaina i totonu o le fa'ata'ita'iga ma fa'amaumauga o fa'amaumauga o mea fa'aoga.

  • G ++ e maua ai le suʻesuʻeina o amioga e le faʻamalamalamaina e mafua mai i le suia o mea masani e ala ile constexpr. Fa'aitiitia le fa'aogaina o manatua e le tagata fa'apipi'i pe a fa'atatau constexpr. Faʻaopoopo lapataiga fou "-Wmismatched-tags" ma le "-Wredundant-tags".
  • Ua tu'uina mai ni filifiliga fou o laina fa'atonu:
    • "-fallocation-dce" e aveese ai paga le mana'omia o le "fou" ma le "tapē" fa'agaioia.
    • "-fprofile-partial-training" e faʻamalo ai le faʻavasegaina o le lapopoa mo faʻailoga e leai se aʻoaʻoga.
    • "-fprofile-reproducible e pulea ai le maualuga o le toe gaosia o talaaga.
    • "-fprofile-prefix-path" e faʻamatala ai le faʻavae autu o le fausiaina o faʻatonuga faʻaaogaina mo faʻasalalauga tuʻufaʻatasia (mo le "-fprofile-generate=profile_dir" ma le "-fprofile-use=profile_dir").
  • I totonu o le lapataiga mo filifiliga ua taʻua, o loʻo tuʻuina atu hyperlinks e mafai ai ona e alu i faʻamaumauga mo nei filifiliga. O le suia o URL e pulea e ala i le "-fdiagnostics-urls" filifiliga.
  • Fa'aopoopoina le fa'agaioiga muamua "__ua_fausia", lea e mafai ona faʻaaogaina e siaki ai galuega faʻapipiʻi.
  • Faʻaopoopoina se galuega fou faʻapipiʻi "__builtin_roundeven" faʻatasi ai ma le faʻatinoina o le galuega faʻataʻamilomilo faʻamatalaina i le ISO / IEC TS 18661 faʻamatalaga, tutusa ma le "taamilosaga", ae o le vaega lapotopoto e sili atu i le 0.5 i luga (i se tau tele), itiiti ifo i le 0.5 - lalo (i le zero), ma tutusa ma le 0.5 - amata mai le parity o le numera mulimuli.
  • Mo le fausaga o le AArch64, o le lagolago mo le faʻaopoopoga SVE2 ua faʻaopoopoina ma le lagolago mo le SVE (Scalable Vector Extension) ua faʻaleleia, e aofia ai le faʻaopoopoina o le lagolago mo galuega ma ituaiga SVE ACLE fausia, ma le faʻaogaina o le vectorization. Lagolago mo LSE (Large System Extensions) ma TME (Transactional Memory Extension) ua faʻalauteleina. Fa'aopoopo fa'atonuga fou o lo'o tu'uina mai i le Armv8.5-A ma le Armv8.6-A, e aofia ai fa'atonuga mo le fa'atupuina o numera fa'afuase'i, fa'ata'amilosaga, fusi fa'amaufa'ailoga manatua,
    bfloat16 ma le fa'ateleina fa'atele. Fa'aopoopo lagolago fa'apolokalame
    Arm Cortex-A77,
    Arm Cortex-A76AE,
    Arm Cortex-A65,
    Arm Cortex-A65AE,
    Arm Cortex-A34 ma
    Maofa FaititiliX3.

  • Fa'aopoopoina le lagolago mo le ABI FDPIC (32-bit function pointers) mo le ARM64. Toe fa'atulagaina ma fa'amalieina le fa'agaioiga o le 64-bit integer operations. Fa'aopoopoina le lagolago CPU
    Arm Cortex-A77,
    Arm Cortex-A76AE ma
    Arm Cortex-M35P. Fa'alauteleina le lagolago mo fa'atonuga o fa'amaumauga a le ACLE, e aofia ai le 32-bit SIMD, 16-bit multiplication, latch arithmetic, ma isi DSP algorithm optimizations. Fa'aopoopoina fa'ata'ita'iga lagolago mo ACLE CDE (Custom Datapath Extension) fa'atonuga.

  • Fa'aleleia atili le fa'atupuina o fa'ailoga ma le fa'a'ave'esea i le pito i tua mo AMD GPU fa'avae ile GCN microarchitecture.
  • Fa'aopoopoina le lagolago mo masini e pei o le XMEGA mo le fausaga o le AVR
    ATtiny202, ATtiny204, ATtiny402, ATtiny404, ATtiny406, ATtiny804, ATtiny806, ATtiny807, ATtiny1604, ATtiny1606, ATtiny1607, ATmega808, ATmega809, ATmega1608, ATmega1609, ATmega3208 3209, ATmega4808 ma ATmega4809.

  • O le Intel ENQCMD fa'atonuga fa'aopoopo fa'aopoopo fa'aa'oa'oga (-menqcmd) ua fa'aopoopoina mo IA-32/x86-64 fausaga. Faʻaopoopo le lagolago mo Intel Cooperlake (-march=cooperlake, e aofia ai le faʻaopoopoga AVX512BF16 ISA) ma Tigerlake (-march=tigerlake, e aofia ai le MOVDIRI, MOVDIR64B ma le AVX512VP2INTERSECT ISA faʻaopoopoga) PPU.
  • O le fa'atinoga o le HSAIL (Heterogeneous System Architecture Intermediate Language) mo faiga fa'akomepiuta eseese e fa'atatau i le HSA architecture ua fa'ate'aina ma e foliga mai o le a aveesea i se fa'asalalauga i le lumana'i.

puna: opennet.ru

Faaopoopo i ai se faamatalaga