Famoahana ny GCC 10 compiler suite

Taorian'ny taona fampandrosoana namoaka famoahana andiana compiler maimaim-poana GCC 10.1, ny famoahana lehibe voalohany amin'ny sampana GCC 10.x vaovao. Mifanaraka amin'ny drafitra vaovao Ny isa famoahana, ny version 10.0 dia nampiasaina tamin'ny dingan'ny fampandrosoana, ary fotoana fohy talohan'ny famoahana ny GCC 10.1 dia efa nisampana ny sampana GCC 11.0, izay mifototra amin'ny fananganana ny famoahana manan-danja manaraka, GCC 11.1.

Ny GCC 10.1 dia miavaka amin'ny fampiharana fanavaozana maro amin'ny fiteny C++ novolavolaina ho an'ny fenitra C++20, fanatsarana mifandraika amin'ny fenitry ny fiteny C ho avy (C2x), fanatsarana vaovao amin'ny backends compiler ary fanohanana andrana. fomba famakafakana static. Ankoatra izany, nandritra ny fanomanana sampana vaovao, ny tetikasa dia namindra ny tahiry avy amin'ny SVN mankany Git.

tena fanovana:

  • nanampy fomba fanandramana amin'ny fanadihadiana static "-fanalyzer", izay manao famakafakana interprocedural misy loharanon-karena amin'ny lalan'ny famonoana kaody sy ny fikorianan'ny angona ao anaty programa. Ny maodely dia afaka mamantatra ny olana amin'ny dingana fanangonana, toy ny antso avo roa heny amin'ny asa maimaim-poana () ho an'ny faritra fitadidiana iray, ny fiparitahan'ny rakitra, ny famandrihana sy ny fandefasana tondro tsy misy dikany, ny fidirana amin'ny sakana fahatsiarovana navotsotra, ny fampiasana sanda tsy fantatra, sns. Ny fampiasana ny fomba vaovao ho an'ny OpenSSL code dia efa nahafahana namantatra vulnerability mampidi-doza.
  • Fanatsarana interprocedural nohatsaraina. Ny pass IPA-SRA (Interprocedural Scalar Shared Replacement) dia novolavolaina mba hiasa amin'ny fotoana mamatotra ary, ankoatra ny zavatra hafa, dia manaisotra ny sanda tsy ampiasaina. Ao amin'ny maodely fanatsarana "-O2", ny safidy "-finline-functions" dia alefa, izay averina averina amin'ny alΓ lan'ny kaody matevina kokoa noho ny fahombiazan'ny famonoana. Nohafainganina ny asan'ny heuristika amin'ny fametrahana ny asa an-tserasera. Ny fanitarana an-tserasera sy ny heuristika kloning miasa dia afaka mampiasa fampahalalana momba ny sandan'ny sanda mba haminavina ny fahombiazan'ny fiovan'ny tsirairay. Ho an'ny C ++, dia nohatsaraina ny fahamarinan'ny fanaparitahana anarana mifototra amin'ny karazana.
  • Enhanced Linking Time Optimizations (LTO). Nampiana executable vaovao lto-manariaka hamerenana ny fampahalalana momba ny rakitra zavatra miaraka amin'ny LTO bytecode. Ny fandalovan'ny LTO parallel dia mamaritra ho azy ny isan'ny asa atao miaraka ary, raha tsy azo faritana izy ireo, dia ampiasao ny fampahalalana momba ny isan'ny cores CPU ho anton-javatra mifanitsy. Nampiana ny fahafahana manindry LTO bytecode mampiasa ny zstd algorithm.
  • Ny mekanika fanatsarana mifototra amin'ny valin'ny fametahana kaody (PGO - Optimization arahin'ny profil) dia nohatsaraina, izay miteraka kaody tsara indrindra mifototra amin'ny famakafakana ny toetran'ny famonoana kaody. Nohatsaraina ny fikojakojana ny mombamomba mandritra ny fanangonana sy ny fisarahana kaody mafana/mangatsiaka. Amin'ny alalan'ny safidy "-fprofile-valuesΒ» dia afaka manara-maso hatramin'ny 4 soatoavina momba ny mombamomba azy, ohatra amin'ny antso ankolaka sy manome fampahalalana momba ny mombamomba azy.
  • Famaritana fandaharana parallΓ¨le nampiharina ho an'ny fiteny C, C ++ ary Fortran OpenACC 2.6, izay mamaritra ny fitaovana hanalana ny asa amin'ny GPU sy ny processeur manokana toy ny NVIDIA PTX. Saika vita ny fampiharana ny fenitra Sokafy ny MP 5.0 (Open Multi-Processing), izay mamaritra ny API sy ny fomba fampiharana ny fomba fandaharana parallΓ¨le amin'ny rafitra multi-core sy hybrid (CPU+GPU/DSP) miaraka amin'ny fahatsiarovana iombonana sy ny vectorization units (SIMD). Fanampiana fanampiny toy ny fepetra manokana farany, torolalana scan sy loop, baiko ary fampiasana_device_addr. Ho an'ny OpenMP sy OpenACC, dia nampiana ny fanohanana ho an'ny fandefasana entana amin'ny taranaka fahefatra (Fiji) sy AMD Radeon (GCN) GPU (VEGA 10/VEGA 20) andiany fahadimy.
  • Ho an'ny fiteny ao amin'ny fianakaviana C, ny fiasa "access" dia nampiana mba hamaritana ny fidiran'ny fiasa amin'ny zavatra mandalo amin'ny fanondro na fanondro, ary hampifandray ireo zavatra ireo amin'ny tohan-kevitra integer misy fampahalalana momba ny haben'ny zavatra. Mba hiasa miaraka amin'ny "fidirana", ny toetra "karazana" dia ampiharina mba hamantarana ny fidirana diso amin'ny asan'ny mpampiasa, ohatra, rehefa manoratra sanda amin'ny faritra ivelan'ny sisin'ny array. Nampiana ihany koa ny toetra "symver" mba hampifandray ireo marika amin'ny rakitra ELF miaraka amin'ny nomeraon-drakitra manokana.
  • Nampiana fampitandremana vaovao:
    • "-Wstring-compare" (ampidirina amin'ny "-Wextra") - mampitandrina momba ny fisian'ny fanehoan-kevitra izay ampitahaina ny aotra amin'ny vokatry ny fiantsoana ny strcmp sy ny strncmp, izay mitovy amin'ny tsy miovaova noho ny halavany. Ny hevitra iray dia lehibe kokoa noho ny haben'ny array amin'ny hevitra faharoa.
    • "-Wzero-length-bounds" (azo atao amin'ny "-Warray-bounds") - mampitandrina momba ny fidirana amin'ireo singa maromaro amin'ny halavany aotra, izay mety hitarika amin'ny fanonerana ny angona hafa.
    • Ny fampitandremana "-Warray-bounds", "-Wformat-overflow", "-Wrestrict", "-Wreturn-local-addr" ary "-Wstringop-overflow" dia nitarina mba hanitarana ny isan'ny toe-javatra ivelan'ny fetra. izay karakaraina.
  • Nampihatra ny fahafahana mamaritra mivantana ireo endri-tsoratra midadasika amin'ny famantarana amin'ny alΓ lan'ny famandrihana amin'izao fotoana izao (UTF-8 amin'ny alΓ lan'ny default) fa tsy fanamarihana UCN (\uNNNN na \UNNNNNNNNN). Ohatra:

    static const int Ο€ = 3;
    int get_naΓ―ve_pi() {
    miverina Ο€;
    }

  • Ho an'ny fiteny C, misy ampahany amin'ny endri-javatra vaovao novolavolaina ao anatin'ny fenitra C2X dia nampiharina (azo atao amin'ny famaritana -std=c2x sy -std=gnu2x): ny fanohanana ny β€œ[[]]” dia niseho mba hamaritana ny toetra toy ny ao amin'ny C++ (ohatra, [[gnu ::const]], [[tsy ampiasaina]], [[fahalavoana]] ary [[angamba_tsy ampiasaina]]. Nampiana fanohanana ny syntax "u8" hamaritana ny tsy miova amin'ny tarehin-tsoratra UTF-8.
    Nampiana macros vaovao ny . Nampiana fanoloana "%OB" sy "%Ob" amin'ny strftime.

  • Ny fomba mahazatra ho an'ny C dia "-fno-common", izay ahafahana miditra amin'ny fomba mahomby kokoa amin'ny fari-piainana manerantany amin'ny sehatra sasany.
  • Ho an'ny C++, fanovana sy fanavaozana 16 eo ho eo no nampiharina, novolavolaina tao amin'ny fenitra C++20. Anisan'izany ny teny fanalahidy fanampiny "consinit"
    ary ny fanohanana ny fanitarana mΓ΄dely dia nampiharina "hevitra". Ny foto-kevitra dia mamela anao hamaritra andiana fepetra takian'ny mari-pamantarana izay, amin'ny fotoana fanangonana, mametra ny fitambaran'ny hevitra azo ekena ho mari-pamantarana mΓ΄dely. Ireo hevitra dia azo ampiasaina mba hialana amin'ny tsy fitovian'ny lojika eo amin'ny toetran'ny karazana data ampiasaina ao anatin'ny mΓ΄dely sy ny toetran'ny karazana data amin'ny masontsivana fampidirana.

  • Ny G++ dia manome fitiliana ny fihetsika tsy voafaritra vokatry ny fiovan'ny zavatra tsy miova amin'ny alΓ lan'ny constexpr. Ahena ny fanjifana fitadidiana ataon'ny mpanangom-bokatra rehefa manao kajy ny constexpr. Nampiana fampitandremana vaovao "-Wmismatched-tags" sy "-Wredundant-tags".
  • Safidy andalana vaovao no natolotra:
    • "-fallocation-dce" hanesorana mpivady "vaovao" sy "famafa" tsy ilaina.
    • "-fprofile-partial-training" hanesorana ny fanatsarana ny habe ho an'ny kaody tsy misy fiofanana.
    • "-fprofile-reproducible mba hifehy ny haavon'ny reproducibility profil.
    • "-fprofile-prefix-path" hamaritana ny lahatahiry fananganana loharano fototra ampiasaina amin'ny famoronana mombamomba misaraka (ho an'ny "-fprofile-generate=profile_dir" sy "-fprofile-use=profile_dir").
  • Ao amin'ny lahatsoratry ny fampitandremana ho an'ireo safidy voalaza, dia omena rohy fanampiny ahafahanao mandeha any amin'ny antontan-taratasy momba ireo safidy ireo. Ny fanoloana URL dia fehezina amin'ny alalan'ny safidy "-fdiagnostics-urls".
  • Nampiana opΓ©rateur preprocessor "__manana_buildin", izay azo ampiasaina hijerena ireo fiasa naorina.
  • Nampiana fiasa vaovao naorina "__builtin_roundeven" miaraka amin'ny fampiharana ny fiasa boribory voafaritra ao amin'ny famaritana ISO/IEC TS 18661, mitovy amin'ny "boribory", fa ny ampahany boribory lehibe kokoa noho ny 0.5 (hatramin'ny sanda lehibe kokoa), latsaky ny 0.5 - midina (hatramin'ny aotra), ary mitovy amin'ny 0.5 - manomboka amin'ny fitovian'ny isa penultimate.
  • Ho an'ny maritrano AArch64, ny fanohanana ny fanitarana SVE2 dia nampiana ary ny fanohanana ny SVE (Scalable Vector Extension) dia nohatsaraina, anisan'izany ny fanohanana fanampiny ho an'ny asa sy karazana SVE ACLE naorina, ary ny fampiasana vectorization. Ny fanohanana ny LSE (Large System Extensions) sy ny TME (Transactional Memory Extension) dia nitarina. Nampiana toromarika vaovao naroso tao amin'ny Armv8.5-A sy Armv8.6-A, ao anatin'izany ny toromarika momba ny famoronana isa kisendrasendra, ny fihodinana, ny famatorana tag fahatsiarovana,
    bfloat16 sy matrix multiplication. Fanampiana processeur fanampiny
    Arm Cortex-A77,
    Arm Cortex-A76AE,
    Arm Cortex-A65,
    Arm Cortex-A65AE,
    Arm Cortex-A34 ary
    Marvell ThunderX3.

  • Fanampiana fanampiny ho an'ny ABI FDPIC (32-bit function pointers) ho an'ny ARM64. Nohavaozina sy nohatsaraina ny fanodinana ny fampandehanana integer 64-bit. Fanampiana CPU fanampiny
    Arm Cortex-A77,
    Arm Cortex-A76AE sy
    Arm Cortex-M35P. Fanohanana nitarina ho an'ny toromarika momba ny fanodinana angon-drakitra ACLE, ao anatin'izany ny SIMD 32-bit, ny fampitomboana 16-bit, ny arithmetika latch, ary ny fanatsarana algorithm DSP hafa. Fanampiana andrana fanampiny ho an'ny toromarika ACLE CDE (Custom Datapath Extension).

  • Nihatsara ny famoronana kaody sy ny vectorization amin'ny backend ho an'ny AMD GPU mifototra amin'ny microarchitecture GCN.
  • Fanampiana fanampiny ho an'ny fitaovana mitovy amin'ny XMEGA ho an'ny maritrano AVR
    ATtiny202, ATtiny204, ATtiny402, ATtiny404, ATtiny406, ATtiny804, ATtiny806, ATtiny807, ATtiny1604, ATtiny1606, ATtiny1607, ATmega808, ATmega809, ATmega1608, ATmega1609, ATmega3208 3209, ATmega4808 ary ATmega4809.

  • Nampiana fanitarana maritrano (-menqcmd) vaovao Intel ENQCMD ho an'ny maritrano IA-32/x86-64. Fanohanana fanampiny ho an'ny Intel Cooperlake (-march=cooperlake, ahitana ny fanitarana AVX512BF16 ISA) sy Tigerlake (-march=tigerlake, ahitana ny CPU MOVDIRI, MOVDIR64B ary AVX512VP2INTERSECT ISA).
  • Ny fampiharana ny HSAIL (Heterogeneous System Architecture Intermediate Language) ho an'ny rafitra informatika heterogΓ¨ne mifototra amin'ny maritrano HSA dia nesorina ary azo inoana fa hesorina amin'ny famoahana ho avy.

Source: opennet.ru

Add a comment