Ho lokolloa ha GCC 9 compiler suite

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

GCC 9.1 e hlokomeleha ka ho tsitsisa tšehetso bakeng sa maemo a C++17, ho tsoela pele ho kenya ts'ebetsong bokhoni ba maemo a tlang a C++20 (codenamed C++2a), ho kenyelletsoa karolong e ka pele ea puo ea D, tšehetso e sa fellang bakeng sa OpenMP 5.0 , hoo e batlang e le tšehetso e feletseng bakeng sa OpenACC 2.5, eketsa scalability ea optimizations interprocedural le optimizations sethaleng se tlamang, katoloso ea lisebelisoa tsa ho hlahloba le ho eketsa litemoso tse ncha, li-backends bakeng sa OpenRISC, C-SKY V2 le AMD GCN GPU.

ka sehloohong fetola:

  • Tšehetso e ekelitsoeng bakeng sa puo ea lenaneo la D. GCC e kenyelletsa karolo e ka pele e nang le moqapi GDC (Gnu D Compiler) le lilaeborari tsa nako ea ho sebetsa (libphobos), tse u lumellang hore u sebelise GCC e tloaelehileng ho theha mananeo ka puo ea lenaneo la D. Mokhoa oa ho nolofalletsa tšehetso ea puo ea D ho GCC e qalile morao ka 2011, empa hulela pele ka lebaka la tlhokahalo ea ho tlisa khoutu ho lumellana le litlhoko tsa GCC le mathata a ho fetisetsa litokelo tsa thepa ea mahlale ho Digital Mars, e ntseng e ntlafatsa puo ea lenaneo la D;
  • Lintlafatso li entsoe ho jenereithara ea khoutu. Mohlala, ts'ebeliso ea maano a fapaneng a ho holisa li-Switch expressions (tafole ea ho tlola, tlhahlobo e nyane, sefate sa qeto) ho kentsoe tšebetsong ho latela maemo. E ekelitse bokhoni ba ho fetola li-linear function tse kenyeletsang Switch expression ho sebelisa "-ftree-switch-conversion" optimization (mohlala, sete ea maemo a kang "keebe 2: joang = 205; break; case 3: joang = 305; break ;” e tla fetoleloa ho "100 * joang + 5";
  • Lintlafatso tse ntlafalitsoeng tsa mekhoa e fapaneng. Litlhophiso tsa inline deployment li fetotsoe bakeng sa li-codebases tsa C++ tsa sejoale-joale 'me tsa atolosoa ka liparamente tse ncha max-inline-insns-small, max-inline-insns-size, uninline-function-insns, uninline-function-time, unlined-thunk-insns le tse sa ngolisoang. -nako ea ho thuha. Ho ntlafala ho nepahala le ho ba mabifi ha karohano ea khoutu e batang / e chesang. scalability e ntlafalitsoeng bakeng sa kholo e kholo haholo likarolo tsa phetolelo (mohlala, ha o sebelisa optimization sethaleng sa ho hokahanya le mananeo a maholo);
  • 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. Kgetho ya kakaretso "-fprofile-sebelisa"hona joale e kenyelletsa mekhoa ea ho ntlafatsa "-fversion-loops-for-strides", "-floop-interchange", "-floop-unroll-and-jam" le "-ftree-loop-distribution". E tlositse ho kenyelletsoa ha li-histograms tse nang le li-counters ho lifaele, tse fokotsang boholo ba lifaele tse nang le profiles (histograms hona joale e hlahisoa ka fofa ha ho etsoa optimizations nakong ea ho hokahanya);
  • Ntlafatso ea Lintlafatso tsa Nako ea Khokahano (LTO). Ho nolofatsa mefuta ho ile ha fanoa pele ho hlahisa sephetho, e leng se entseng hore ho khonehe ho fokotsa haholo boholo ba lifaele tsa ntho ea LTO, ho fokotsa tšebeliso ea memori sethaleng se tlamang, le ho ntlafatsa ho bapisa ts'ebetso. Palo ea li-partitions (-param lto-partitions) e eketsehile ho tloha ho 32 ho ea ho 128, e ntlafatsang ts'ebetso ho litsamaiso tse nang le likhoele tse ngata tsa CPU. Ho kentsoe parameter ho laola palo ea lits'ebetso tsa optimizer
    "-param lto-max-streaming-parallelism";

    Ka lebaka leo, ha ho bapisoa le GCC 8.3, lintlafatso tse hlahisitsoeng ho GCC 9 lumelloa fokotsa nako ea ho bokella Firefox 5 le LibreOffice 66 ka hoo e ka bang 6.2.3%. Boholo ba lifaele tsa ntho bo fokotsehile ka 7%. Nako ea ho tlama ho 8-core CPU e fokotsehile ka 11%. Sekhahla sa tlhophiso ea tatellano ea sethala sa ho hokahanya se se se le 28% ka potlako mme se ja mohopolo o fokolang oa 20%. Tšebeliso ea memori ea processor e 'ngoe le e' ngoe ea mohato o tšoanang oa LTO e fokotsehile ka 30%;

  • Boholo ba litlhaloso tsa mananeo a tšoanang li sebelisoa bakeng sa lipuo tsa C, C++ le Fortran OpenACC 2.5, e hlalosang lisebelisoa tsa ho theola ts'ebetso ho li-GPU le li-processor tse khethehileng tse kang NVIDIA PTX;
  • Tšehetso e sa fellang bakeng sa maemo e kentsoe tšebetsong bakeng sa C le C++ Bula MP 5.0 (Open Multi-Processing), e hlalosang API le mekhoa ea ho sebelisa mekhoa ea mananeo a tšoanang bakeng sa lipuo tsa C, C++ le Fortran ho li-multi-core and hybrid (CPU+GPU/DSP) tse nang le likarolo tsa memori le vectorization (SIMD) ;
  • Litemoso tse ncha li ekelitsoe bakeng sa puo ea C: "-Waddress-of-paletseng-setho" (boleng bo sa lekanyetsoang ba pointer ho setho se pakiloeng sa sebopeho kapa mokhatlo) le
    «-Boleng-boleng" (ha u fumana mesebetsi bakeng sa ho bala boleng bo feletseng, haeba ho na le mosebetsi o loketseng haholoanyane bakeng sa khang e boletsoeng, mohlala, masela (3.14) a lokela ho sebelisoa ho e-na le abs (3.14). Litemoso tse ncha li kenyellelitsoe bakeng sa C++: "-Wdeprecated-copy",
    "-Winit-list-lifetime", "-Wredundant-move", "-Wpessimizing-move" le "-Wclass-conversion". Litemoso tse ngata tse neng li fumaneha pele li ekelitsoe;

  • E kentse tšehetso ea liteko bakeng sa maemo a nakong e tlang a puo ea C, e bitsoang C2x. Ho nolofalletsa tšehetso ea C2x, sebelisa likhetho "-std=c2x" le "-std=gnu2x" (ho nolofalletsa li-extensions tsa GNU). Tekanyetso e ntse e le boemong ba pele ba tsoelo-pele, ka hona, ea bokhoni ba eona, ho tšehetsoa feela poleloana _Static_assert ka khang e le 'ngoe (_Static_assert with two arguments is standardized in C11);
  • Tšehetso bakeng sa maemo a C ++ 17 e phatlalalitsoe hore e tsitsitse. Karolong e ka pele, bokhoni ba puo ea C ++ 17 bo kenngoe ts'ebetsong ka botlalo, 'me ho libstdc ++, mesebetsi ea laebrari e hlalositsoeng ka mokhoa o tloaelehileng e haufi le ts'ebetsong e feletseng;
  • Tsoela pele ts'ebetsong likarolo tsa maemo a tlang C++2a. Ka mohlala, bokhoni ba ho kenyelletsa marang-rang nakong ea ho qala bo kenyelelitsoe, li-extensions tsa lipolelo tsa lambda li kentsoe ts'ebetsong, tšehetso bakeng sa litho tse se nang letho tsa mekhoa ea data le litšobotsi tse ka 'nang tsa e-ba teng / tse sa khonehang li kenyelitsoe, bokhoni ba ho letsetsa mesebetsi ea sebele ka lipolelo tse nang le maemo li fanoe. , joalo-joalo.
    Ho nolofalletsa tšehetso ea C++2a, sebelisa likhetho tsa "-std=c++2a" le "-std=gnu+++2a". Lifaele tsa lihlooho tse kenyellelitsoeng ho libstdc++ bakeng sa C++2a, std::remove_cvref, std::unwrap_reference, std::unwrap_decay_ref, std::is_nothrow_convertible le std::type_identity litšobotsi, stdler, pdst: , std::bind_front,
    std:: etela, std::is_constant_evaluated le std::assume_aligned, tšehetso e ekelitsoeng bakeng sa mofuta oa char8_t, e kentse bokhoni ba ho hlahloba sehlomathiso le sekoti sa likhoele (ho qala_ka, ho qetela_ka);

  • Tšehetso e ekelitsoeng bakeng sa li-processor tse ncha tsa ARM
    Cortex-A76, Cortex-A55, Cortex-A76 DynamIQ e kholo.LITTLE le Neoverse N1. Ts'ehetso e ekelitsoeng bakeng sa litaelo tse hlahisitsoeng ho Armv8.3-A bakeng sa ho sebetsa ka linomoro tse rarahaneng, pseudo-random number generation (rng) le memory tagging (memtag), hammoho le litaelo tsa ho thibela litlhaselo tse amanang le ts'ebetso e inahaneloang le ts'ebetso ea yuniti ea ho bolela esale pele ea lekala. . Bakeng sa meralo ea AArch64, mokhoa oa ts'ireletso o kentsoe mateanong a qubu le qubu ("-fstack-clash-protection"). Ho sebelisa likarolo tsa meralo ea Armv8.5-A, khetho ea "-march=armv8.5-a" e kentsoe.

  • E kenyelletsa mokokotlo oa ho hlahisa khoutu bakeng sa li-GPU tsa AMD tse thehiloeng ho GCN microarchitecture. Ts'ebetsong hajoale e lekanyelitsoe ho bokelleng lits'ebetso tsa khoele e le 'ngoe (tšehetso ea ho etsa lipalo tse nang le likhoele tse ngata ka OpenMP le OpenACC e tla fanoa hamorao) le tšehetso bakeng sa GPU Fiji le Vega 10;
  • E kentse backend e ncha bakeng sa li-processor OpenRISC;
  • E kenyellelitsoe backend bakeng sa processors C-SKY V2, e hlahisoang ke k'hamphani ea Chaena ea lebitso le le leng bakeng sa lisebelisoa tse sa tšoaneng tsa bareki;
  • Likhetho tsohle tsa mela ea litaelo tse sebelisang boleng ba byte li tšehetsa li-suffixes kb, KiB, MB, MiB, GB le GiB;
  • E kentswe tshebetsong khetho ea "-flive-patching=[inline-only-static|inline-clone]" e u lumella ho fumana pokello e bolokehileng bakeng sa lits'ebetso tsa ho patch ka lebaka la taolo ea maemo a mangata mabapi le ts'ebeliso ea mekhoa e fapaneng (interprocedural)IPA) optimizations;
  • E kenyellelitsoe "--completion" kgetho bakeng sa taolo e ntle ea ho phethela khetho ha u sebelisa bash;
  • Lisebelisoa tsa tlhahlobo li fana ka lipontšo tsa litemana tsa mongolo oa mohloli tse bontšang nomoro ea mohala le lintlha tse amanang le pono, joalo ka mefuta ea operand. Ho thibela pontšo ea linomoro tsa line le li-labels, likhetho tsa "-fno-diagnostics-show-line-numbers" le "-fno-diagnostics-show-labels" li fanoa;

    Ho lokolloa ha GCC 9 compiler suite

  • E atolositsoe lisebelisoa tsa ho hlahloba liphoso ka khoutu ea C ++, ho baloa ho ntlafalitsoeng ha tlhahisoleseling mabapi le lisosa tsa liphoso le ho totobatsa maemo a thata;

    Ho lokolloa ha GCC 9 compiler suite

  • Khetho e ekelitsoeng "-fdiagnostics-format = json", e lumellang ho hlahisa tlhahiso ea tlhahlobo ka mokhoa o baloang ke mochini (JSON);
  • E kentse likhetho tse ncha tsa "profile-filter-files" le "-fprofile-exclude-files" ho khetha lifaele tsa mohloli tse lokelang ho sebetsoa;
  • AddressSanitizer e fana ka tlhahiso ea khoutu ea netefatso e sebetsang haholoanyane bakeng sa mefuta e ikemetseng, e fokotsang tšebeliso ea memori ea faele e sebetsang e hlahlojoang;
  • Tlhahiso e ntlafetseng ho "-fopt-info» (lintlha tse qaqileng mabapi le lintlafatso tse ekelitsoeng). E kentse lihlongoana tse ncha "optimized" le "missed", ho phaella ho "note" e neng e le teng pele. Tlhahiso e ekelitsoeng ea tlhahisoleseling mabapi le ho etsa liqeto mabapi le ho senoloa ha inline le vectorization ea lipotoloho;
  • E kentse khetho ea "-fsave-optimization-record", ha e hlalositsoe, GCC e boloka faele ea SRCFILE.opt-record.json.gz ka tlhaloso ea liqeto mabapi le tšebeliso ea lintlafatso tse itseng. Khetho e ncha e fapane le mokhoa oa "-fopt-info" ka ho kenyelletsa metadata e eketsehileng, e kang tlhahisoleseding e mabapi le profil le liketane tse ka hare;
  • Likhetho tse ekelitsoeng "-fipa-stack-alignment" le "-fipa-reference-addressable" ho laola stack alignment le ts'ebeliso ea mekhoa ea ho sebetsana le maemo (ho ngola feela kapa ho bala hantle) bakeng sa mefuta e sa fetoheng nakong ea ntlafatso ea li-interprocedural;
  • Ho hlahisoa mesebetsi e mecha e hahelletsoeng ho laola tlamahano ea semelo hammoho le boits'oaro bo amanang le ponelopele ea lekala le ts'ebetso ea litaelo tse inahaneloang: "__builtin_na_semelo«,«__builtin_expect_with_probability"Mme"__builtin_speculation_safe_value". Ho kentsoe tšobotsi e ncha bakeng sa mesebetsi, mefuta le mefuta kopitsa;
  • Tšehetso e feletseng bakeng sa ho kenya letsoho / tlhahiso ea asynchronous e kentsoe tšebetsong bakeng sa puo ea Fortran;
  • Tšehetso ea li-platform tsa Solaris 10 (*-*-solaris2.10) le Cell/BE (Cell Broadband Engine SPU) e tlositsoe 'me e tla tlosoa tokollong e kholo e latelang. Tšehetso ea Armv2, Armv3, Armv5 le Armv5E ea meralo e khaotsoe. Tšehetso ea Intel MPX (Memory Protection Extensions) e khaotsoe.

Source: opennet.ru

Eketsa ka tlhaloso