Kuburitswa kweiyo GCC 9 compiler suite

Mushure megore rebudiriro yakabudiswa kusunungurwa kweseti yemahara yevagadziri GCC 9.1, yekutanga kuburitswa kukuru mubazi idzva reGCC 9.x. Maererano ne chirongwa chitsva nhamba dzekuburitsa, vhezheni 9.0 yakashandiswa mukuvandudza, uye nguva pfupi isati yaburitswa GCC 9.1, bazi reGCC 10.0 rakanga ratove nebazi, pahwaro hwaizotevera kuburitswa kwakakosha, GCC 10.1, kwaizoumbwa.

GCC 9.1 yakakosha pakudzikamisa tsigiro yeC++17 chiyero, ichienderera mberi nekushandisa kugona kweramangwana C++20 mwero (codenamed C++2a), kusanganisirwa kumberi kwemutauro weD, kutsigirwa kwechikamu cheOpenMP 5.0 , inenge yakwana tsigiro yeOpenACC 2.5, inowedzera scalability ye interprocedural optimizations uye optimizations padanho rinosungirwa, kuwedzera kwemidziyo yekuongorora uye kuwedzera kweyambiro nyowani, backends yeOpenRISC, C-SKY V2 uye AMD GCN GPU.

chikuru change:

  • Yakawedzerwa tsigiro yemutauro wekuronga D. GCC inosanganisira yekumberi ine compiler GDC (Gnu D Compiler) uye maraibhurari ekumhanya (libphobos), ayo anokubvumira kushandisa GCC yakajairwa kuvaka zvirongwa mumutauro wechirongwa cheD. Maitiro ekugonesa rutsigiro rwemutauro weD muGCC kwatanga kumashure muna 2011, asi kuzvuzvurudzwa nekuda kwekudiwa kwekuunza kodeti kuti ienderane nezvinodiwa neGCC uye matambudziko nekuendeswa kwekodzero dzepfuma kuDhijitari Mars, iyo iri kugadzira mutauro weD chirongwa;
  • Kuvandudzwa kwakaitwa kune code generator. Semuenzaniso, kushandiswa kwemaitiro akasiyana ekuwedzera Shandura mataurirwo (kusvetuka tafura, bit test, sarudzo muti) zvichienderana nemamiriro aitwa. Yakawedzera kugona kushandura mutsara mabasa anosanganisira Chinja kutaura uchishandisa iyo "-ftree-switch-conversion" optimization (semuenzaniso, seti yemamiriro akaita se "kesi 2: sei = 205; break; kesi 3: sei = 305; break ;” ichashandurwa kuita "100 * sei + 5";
  • Yakavandudzwa interprocedural optimizations. Inline deployment marongero akachinjirwa emazuva ano C++ codebases uye akawedzerwa neatsva paramita max-inline-insns-diki, max-inline-insns-size, uninlined-function-insns, uninlined-function-time, uninlined-thunk-insns uye isina kunyorwa. -nguva-yakadaro. Kuvandudzwa kwechokwadi uye hukasha hwekutonhora / kupisa kodhi kupatsanurwa. Yakavandudzwa scalability kune yakakura kwazvo zvikamu zveshanduro (semuenzaniso, kana uchishandisa optimization padanho rekubatanidza kune makuru mapurogiramu);
  • Iyo optimization mechanism inoenderana nemhedzisiro yekodhi profiling (PGO - Profile-inotungamirwa optimization) yakagadziridzwa, iyo inoburitsa yakawedzera kodhi kodhi zvichienderana nekuongororwa kwehunhu hwekuita kwekodhi. Summary sarudzo "-fprofile-kushandisa"ikozvino inosanganisira optimization modes "-fversion-loops-for-strides", "-floop-interchange", "-floop-unroll-and-jam" uye "-ftree-loop-distribution". Yakabvisa kuisirwa kwe histograms ine zviverengero mumafaira, izvo zvakaderedza saizi yemafaira ane profiles (histograms ikozvino inogadzirwa panhunzi pakuita optimizations panguva yekubatanidza);
  • Yakavandudzwa Yekubatanidza Nguva Yekugadzirisa (LTO). Kurerutsa mhando kwakapihwa kusati kwaburitsa mhedzisiro, izvo zvakaita kuti zvikwanise kudzikisa zvakanyanya saizi yemafaira echinhu cheLTO, kuderedza kushandiswa kwendangariro padanho rekusunga, uye kugadzirisa kuenzanirana kwemashandiro. Huwandu hwezvikamu (-param lto-partitions) hwawedzerwa kubva pa32 kuenda pa128, izvo zvinovandudza mashandiro pamasystem ane nhamba huru yeCPU tambo. Iyo parameter yakawedzerwa kudzora huwandu hwe optimizer maitiro
    "-param lto-max-streaming-parallelism";

    Nekuda kweizvozvo, zvichienzaniswa neGCC 8.3, iyo optimizations yakaunzwa muGCC 9 kubvumidzwa kuderedza nguva yekubatanidza yeFirefox 5 uye LibreOffice 66 ne6.2.3%. Saizi yemafaira echinhu yakadzikira ne7%. Kusunga nguva pa8-core CPU yakadzikira ne11%. Iyo inoteedzana optimization nhanho yekubatanidza nhanho ikozvino 28% nekukurumidza uye inoshandisa 20% shoma ndangariro. Memory kushandiswa kwega yega processor yeparallelized stage yeLTO yakadzikira ne30%;

  • Mazhinji eakafanana hurongwa hwekutemerwa hunoitwa kuC, C ++ uye Fortran mitauro OpenACC 2.5, iyo inotsanangudza maturusi ekudonhedza mashandiro paGPUs uye nyanzvi processors dzakadai seNVIDIA PTX;
  • Rutsigiro rwechikamu cheiyo chiyero chakaitwa kuC uye C ++ Vhura MP 5.0 (Vhura Multi-Processing), iyo inotsanangura iyo API uye nzira dzekushandisa dzakafanana hurongwa nzira dzeC, C ++ uye Fortran mitauro pane akawanda-musimboti uye hybrid (CPU+GPU/DSP) ane yakagovaniswa ndangariro uye vectorization zvikamu (SIMD) ;
  • Nyevero itsva dzakawedzerwa kumutauro weC: "-Wadhiresi-ye-yakazara-nhengo" (isina kurongeka kukosha kune akazara nhengo yechimiro kana mubatanidzwa) uye
    Β«-Wabsolute-value"(kana uchiwana mabasa ekuverenga kukosha kwakakwana, kana paine basa rakanyanya kufanirwa kune yakatsanangurwa nharo, semuenzaniso, machira (3.14) anofanira kushandiswa pachinzvimbo cheabs (3.14). Yambiro nyowani yakawedzerwa yeC++: "-Wdeprecated-copy",
    "-Winit-list-lifetime", "-Wredundant-move", "-Wpessimizing-move" uye "-Wclass-conversion". Yambiro zhinji dzaimbowanikwa dzakawedzerwa;

  • Yakawedzera tsigiro yechiyedzo chechikamu chenguva yemberi yemutauro weC, ine codenamed C2x. Kugonesa rutsigiro rweC2x, shandisa sarudzo "-std=c2x" uye "-std=gnu2x" (kugonesa GNU edzedzero). Chiyero ichi chichiri padanho rekutanga rebudiriro, saka, yekwaniso yacho, chete chirevo _Static_assert chine nharo imwe chete chinotsigirwa (_Static_assert nenharo mbiri inomisikidzwa muC11);
  • Tsigiro yeC ++ 17 standard yakanzi yakagadzikana. Pamberi, hunyanzvi hwemutauro weC ++ 17 hunoitwa zvizere, uye mu libstdc ++, mabasa eraibhurari anotsanangurwa muyero ari pedyo nekuita zvizere;
  • Kuenderera mberi kuita zvinhu zvenguva yemberi C++2a chiyero. Semuyenzaniso, kugona kusanganisa masanji panguva yekutanga kwakawedzerwa, kuwedzeredzwa kwelambda mataurirwo akaitwa, tsigiro yenhengo dzisina chinhu dzezvimiro zvedata uye zvingangove / zvisingaite hunhu hwakawedzerwa, kugona kudaidza chaiwo mabasa mune inomisikidzwa mataurirwo akapihwa. , nezvimwewo.
    Kugonesa rutsigiro rweC++2a, shandisa "-std=c++2a" uye "-std=gnu++2a" sarudzo. Yakawedzera bit uye shanduro yemusoro mafaera kune libstdc++ yeC++2a, std::remove_cvref, std::unwrap_reference, std::unwrap_decay_ref, std::is_nothrow_convertible uye std::type_identity maitiro, midlerpoint, pdst: , std::bind_mberi,
    std::shanya, std::is_constant_evaluated uye std::assume_aligned, yakawedzera tsigiro yerudzi rwe char8_t, yakashandisa kugona kutarisa prefix uye suffix yetambo (inotanga_ne, inopera_ne);

  • Yakawedzera rutsigiro rwevatsva veARM processors
    Cortex-A76, Cortex-A55, Cortex-A76 DynamIQ hombe.LITTLE uye Neoverse N1. Yakawedzerwa tsigiro yemirairo yakaunzwa muArmv8.3-A yekushanda nenhamba dzakaoma, pseudo-random nhamba chizvarwa (rng) uye memory tagging (memtag), pamwe nemirairo yekuvharisa kurwisa kune chekuita nekufungidzira kuuraya uye kushanda kwebazi rekufanotaura unit. . Kune iyo AArch64 yekuvaka, nzira yekudzivirira yakawedzerwa mharadzano dze stack uye murwi ("-fstack-clash-protection"). Kushandisa maficha eArmv8.5-A architecture, sarudzo "-march=armv8.5-a" yawedzerwa.

  • Inosanganisira backend yekugadzira kodhi ye AMD GPUs yakavakirwa paGCN microarchitecture. Kuitwa kwacho pari zvino kunogumira pakuunganidzwa kwe-single-threaded application (rutsigiro rwekuita akawanda-akarukwa kuverenga kuburikidza neOpenMP uye OpenACC ichapihwa gare gare) uye rutsigiro rweGPU Fiji neVega 10;
  • Yakawedzera backend nyowani ye processors OpenRISC;
  • Yakawedzera backend ye processors C-SKY V2, yakagadzirwa nekambani yeChinese yezita rimwe chete kune zvakasiyana-siyana zvevatengi;
  • Yese yekuraira mutsara sarudzo dzinoshanda byte kukosha dzinotsigira suffixes kb, KiB, MB, MiB, GB uye GiB;
  • Implemented iyo "-flive-patching=[inline-only-static|inline-clone]" sarudzo inokutendera iwe kuti uwane yakachengeteka kuunganidzwa kwehupenyu-patching masisitimu nekuda kweakawanda-level kutonga pamusoro pekushandiswa kwe interprocedural (IPA) optimizations;
  • Yakawedzerwa "--kupedzisa" sarudzo ye-fire-grained control yekupedzisa sarudzo paunenge uchishandisa bash;
  • Zvishandiso zvekuongorora zvinopa zviratidziro zvekwakabva zvinyorwa zvinyorwa zvinoratidza mutsara nhamba uye nekuona yekumaka ruzivo rwakabatana, senge operand marudzi. Kudzima kuratidzwa kwenhamba dzemitsara uye mavara, sarudzo "-fno-diagnostics-show-line-nhamba" uye "-fno-diagnostics-show-labels" inopiwa;

    Kuburitswa kweiyo GCC 9 compiler suite

  • Yakawedzerwa zvishandiso zvekuongorora zvikanganiso muC ++ kodhi, yakavandudzwa kuverenga kweruzivo nezve zvikonzero zvekukanganisa uye kujekesa kweanonetsa paramita;

    Kuburitswa kweiyo GCC 9 compiler suite

  • Yakawedzerwa sarudzo "-fdiagnostics-format = json", iyo inobvumira kuburitsa diagnostic kubuda mumushini-inoverengeka fomati (JSON);
  • Yakawedzera sarudzo nyowani dzeprofile "-fprofile-filter-files" uye "-fprofile-exclude-mafaira" kusarudza mafaera ekutanga kuti agadziriswe;
  • KeroSanitizer inopa chizvarwa cheakawanda compact verification kodhi yeotomatiki zvinosiyana, izvo zvinoderedza ndangariro kushandiswa kwefaira rinoitwa riri kuongororwa;
  • Kubuda kwakavandudzwa mu "-fopt-infoΒ»(ruzivo rwakadzama nezve akawedzera optimizations). Yakawedzera maprefixes matsva "yakagadziridzwa" uye "yakapotsa", kuwedzera kune yaimbove iripo prefix "noti". Yakawedzera kuburitsa kweruzivo nezve kuita sarudzo pane inline-kuvhurika uye vectorization yema cycle;
  • Yakawedzera "-fsave-optimization-record" sarudzo, kana yatsanangurwa, GCC inochengetedza SRCFILE.opt-record.json.gz faira ine tsananguro yezvisarudzo pamashandisirwo ezvimwe zvigadziriso. Sarudzo nyowani inosiyana neiyo "-fopt-info" modhi nekubatanidza mamwe metadata, senge ruzivo nezve profil uye inline maketani;
  • Yakawedzerwa sarudzo "-fipa-stack-alignment" uye "-fipa-reference-addressable" kudzora stack alignment uye kushandiswa kwemakero modes (nyora-chete kana kuverenga-chaiyo) kune static variables panguva interprocedural optimizations;
  • Mabasa matsva akavakirwa-mukati anounzwa kudzora hunhu hunosunga pamwe nemaitiro ane chekuita nekufanotaura kwebazi uye fungidziro yekuraira kuuraya: "__builtin_has_attributeΒ«,Β«__builtin_expect_with_probability"Uye"__builtin_speculation_safe_value". Hunhu hutsva hwakawedzerwa kune mabasa, zvinosiyana uye mhando mufananidzo;
  • Tsigiro yakazara yeasynchronous yekupinda/inobuda yaitwa yemutauro weFortran;
  • Tsigiro yeSolaris 10 (*-*-solaris2.10) uye Cell/BE (Cell Broadband Engine SPU) mapuratifomu akaregwa uye achabviswa mukuburitswa kukuru kunotevera. Tsigiro yeArmv2, Armv3, Armv5 uye Armv5E zvivakwa zvakamiswa. Tsigiro yeIntel MPX (Memory Protection Extensions) yakamiswa.

Source: opennet.ru

Voeg