Tso tawm ntawm GCC 10 compiler suite

Tom qab ib xyoos ntawm kev loj hlob luam tawm tso tawm ib qho dawb txheej ntawm compilers GCC 10.1, thawj qhov kev tso tawm loj hauv GCC 10.x tshiab ceg. Raws li tswv yim tshiab tso tawm cov lej, version 10.0 tau siv thaum lub sijhawm txhim kho, thiab tsis ntev ua ntej kev tso tawm ntawm GCC 10.1, GCC 11.0 ceg tau tawg lawm, raws li qhov tseem ceeb tshaj tawm tom ntej, GCC 11.1, yuav raug tsim.

GCC 10.1 yog qhov tseem ceeb rau kev siv ntau qhov kev tsim kho tshiab hauv C ++ hom lus tsim rau C ++ 20 tus qauv, kev txhim kho cuam tshuam rau yav tom ntej C hom lus (C2x), kev ua kom zoo dua tshiab hauv cov ntaub ntawv rov qab thiab kev txhawb nqa kev sim static tsom xam hom. Tsis tas li ntawd, thaum lub sij hawm kev npaj ntawm ib ceg tshiab, qhov project pauv lub repository ntawm SVN mus rau Git.

ntsiab hloov:

  • Ntxiv sim hom ntawm static tsom xam "-fanalyzer", uas ua cov peev txheej-intensive interprocedural tsom xam ntawm txoj cai ua txoj hauv kev thiab cov ntaub ntawv ntws hauv ib qho kev pab cuam. Cov hom muaj peev xwm txheeb xyuas cov teeb meem ntawm lub sijhawm muab tso ua ke, xws li ob npaug hu rau dawb () muaj nuj nqi rau ib cheeb tsam nco, cov ntaub ntawv piav qhia txog kev xau, dereferencing thiab dhau cov pointers tsis muaj, nkag mus rau cov cim xeeb pub dawb, siv cov nqi tsis tsim nyog, thiab lwm yam. Kev siv hom tshiab rau OpenSSL code twb tau ua kom paub meej txaus ntshai vulnerability.
  • Txhim kho cov txheej txheem kev ua haujlwm zoo. IPA-SRA (Interprocedural Scalar Shared Replacement) pass tau raug kho dua tshiab los ua haujlwm ntawm lub sijhawm khi thiab, ntawm lwm yam, tam sim no tshem tawm cov suav thiab xa rov qab cov nqi tsis siv. Hauv "-O2" hom kev ua kom zoo, qhov "-finline-functions" kev xaiv tau qhib, uas tau hloov kho kom haum rau ntau qhov kev cog lus ntawm kev ua tiav. Kev ua haujlwm ntawm heuristic rau inline muaj nuj nqi xa mus tau nrawm. Inline expansion thiab muaj nuj nqi cloning heuristics tam sim no siv tau cov ntaub ntawv hais txog tus nqi ntau yam los kwv yees cov txiaj ntsig ntawm tus neeg hloov pauv. Rau C ++, qhov tseeb ntawm hom alias parsing tau raug txhim kho.
  • Txhim kho Lub Sijhawm Txuas Txuas Ntxiv (LTO). Ntxiv tshiab executable lwj-dum rov pib dua cov ntaub ntawv hais txog cov khoom siv nrog LTO bytecode. Parallel LTO dhau los txiav txim siab tus naj npawb ntawm ib txhij ua haujlwm ua haujlwm thiab, yog tias lawv tsis tuaj yeem txiav txim siab, siv cov ntaub ntawv hais txog tus lej ntawm CPU cores raws li qhov sib piv. Ntxiv lub peev xwm los compress LTO bytecode siv zstd algorithm.
  • Kev ua kom zoo dua qub raws li cov txiaj ntsig ntawm cov lej profile (PGO - Profile-guided optimization) tau raug txhim kho, uas ua kom muaj txiaj ntsig zoo dua raws li kev txheeb xyuas ntawm cov yam ntxwv ntawm kev ua tiav code. Txhim kho profile txij nkawm thaum muab tso ua ke thiab kub / txias code sib cais. Ntawm qhov kev xaiv "-fprofile-tus nqiΒ» tam sim no tuaj yeem saib xyuas txog li 4 qhov profile qhov tseem ceeb, piv txwv li kev hu xov tooj tsis ncaj thiab muab cov ntaub ntawv profile meej dua.
  • Parallel programming specification siv rau C, C ++ thiab Fortran hom lus OpenACC 2.6, uas txhais cov cuab yeej rau kev ua haujlwm offloading ntawm GPUs thiab cov txheej txheem tshwj xeeb xws li NVIDIA PTX. Kev ua raws li tus qauv yuav luag tiav QhibMP 5.0 (Qhib Multi-Processing), uas txhais cov API thiab cov txheej txheem ntawm kev siv cov txheej txheem sib luag ntawm cov tub ntxhais kawm ntau thiab hybrid (CPU + GPU / DSP) cov tshuab nrog kev sib koom nco thiab vectorization units (SIMD). Ntxiv nta xws li lastprivate conditionals, scan thiab voj directives, order thiab use_device_addr expressions. Rau OpenMP thiab OpenACC, kev txhawb nqa tau ntxiv rau kev ua haujlwm offloading ntawm plaub tiam (Fiji) thiab thib tsib tiam AMD Radeon (GCN) GPUs (VEGA 10 / VEGA 20).
  • Rau cov hom lus ntawm tsev neeg C, qhov "access" muaj nuj nqi tau ntxiv los piav qhia txog txoj haujlwm nkag mus rau cov khoom dhau los ntawm kev siv lossis tus taw tes, thiab koom nrog cov khoom zoo li no nrog cov lus tsis sib xws uas muaj cov ntaub ntawv hais txog qhov loj ntawm cov khoom. Txhawm rau ua haujlwm nrog "kev nkag mus", "hom" tus cwj pwm yog siv los txheeb xyuas kev nkag tsis raug los ntawm cov neeg siv lub luag haujlwm, piv txwv li, thaum sau cov txiaj ntsig rau thaj tsam sab nraud ntawm thaj tsam ntawm array. Tsis tas li ntxiv yog "symver" tus cwj pwm rau cov cim sib koom ua ke hauv ELF cov ntaub ntawv nrog cov lej tshwj xeeb.
  • Cov lus ceeb toom tshiab ntxiv:
    • "-Wstring-piv" (ua haujlwm nrog "-Wextra") - ceeb toom txog qhov muaj cov kab lus uas xoom piv nrog qhov tshwm sim ntawm kev hu rau strcmp thiab strncmp lub luag haujlwm, uas yog sib npaug rau qhov tsis tu ncua vim qhov tseeb tias qhov ntev. ntawm ib qho kev sib cav ntau dua qhov loj ntawm qhov array hauv qhov kev sib cav thib ob.
    • "-Wzero-length-bounds" (enabled nrog "-Warray-bounds") - ceeb toom txog kev nkag mus rau array ntsiab ntawm xoom ntev, uas yuav ua rau overwriting lwm cov ntaub ntawv.
    • Cov lus ceeb toom "-Warray-bounds", "-Wformat-overflow", "-Wrestrict", "-Wreturn-local-addr" thiab "-Wstringop-overflow" cov lus ceeb toom tau nthuav dav kom nthuav dav cov xwm txheej sab nraud. uas yog tuav.
  • Siv lub peev xwm los qhia ncaj qha rau cov cim dav hauv cov cim uas siv cov encoding tam sim no (UTF-8 los ntawm lub neej ntawd) tsis yog UCN cov cim (\uNNNN lossis \UNNNNNNNN). Piv txwv li:

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

  • Rau cov lus C, ib feem ntawm cov yam ntxwv tshiab tsim nyob rau hauv tus qauv C2X tau ua tiav (ua haujlwm los ntawm kev qhia -std = c2x thiab -std = gnu2x): kev txhawb nqa rau "[[]]" syntax tau tshwm sim rau kev txhais cov cwj pwm xws li hauv C++ (piv txwv li, [[gnu ::const]], [[deprecated]], [[fallthrough]] thiab [[maybe_unused]]. Ntxiv kev txhawb nqa rau "u8" syntax rau kev txhais qhov tsis tu ncua nrog UTF-8 cim.
    Ntxiv macros tshiab rau . Ntxiv "% OB" thiab "% Ob" hloov mus rau strftime.

  • Lub neej ntawd hom rau C yog "-fno-common", uas tso cai rau kev nkag mus tau zoo dua rau lub ntiaj teb hloov pauv ntawm qee lub platform.
  • Rau C ++, txog 16 qhov kev hloov pauv thiab kev tsim kho tshiab tau raug coj los siv, tsim hauv C ++ 20 tus qauv. Ntxiv nrog rau lo lus tseem ceeb ntxiv "constinit"
    thiab kev txhawb nqa rau template extensions tau siv "tswvyim". Cov tswv yim tso cai rau koj los txheeb xyuas cov txheej txheem template uas yuav tsum tau ua, thaum lub sijhawm sib sau, txwv cov txheej txheem sib cav uas tuaj yeem lees txais raws li cov qauv ntsuas. Cov tswv yim tuaj yeem siv los tiv thaiv kev tsis sib haum xeeb ntawm cov khoom ntawm cov ntaub ntawv hom siv nyob rau hauv cov qauv thiab cov ntaub ntawv hom khoom ntawm cov input tsis.

  • G ++ muab kev tshawb pom ntawm tus cwj pwm tsis tau hais los ntawm kev hloov cov khoom tsis tu ncua los ntawm constexpr. Txo kev nco noj los ntawm lub compiler thaum xam constexpr. Ntxiv cov lus ceeb toom tshiab "-Wmismatched-tags" thiab "-Wredundant-tags".
  • Cov kev xaiv kab hais kom ua tshiab tau raug npaj:
    • "-fallocation-dce" tshem tawm cov khub tsis tsim nyog ntawm "tshiab" thiab "rho tawm" tus tswv.
    • "-fprofile-partial-training" kom lov tes taw qhov kev ua kom zoo tshaj plaws rau cov lej uas tsis muaj kev cob qhia khiav.
    • "-fprofile-reproducible los tswj cov qib ntawm profile reproducibility.
    • "-fprofile-prefix-path" los txhais lub hauv paus tsim cov npe siv rau cov cim cais (rau "-fprofile-generate=profile_dir" thiab "-fprofile-use=profile_dir").
  • Hauv cov ntawv ceeb toom rau cov kev xaiv hais, hyperlinks tau muab tso cai rau koj mus rau cov ntaub ntawv rau cov kev xaiv no. URL hloov pauv yog tswj los ntawm kev xaiv "-fdiagnostics-urls".
  • Ntxiv preprocessor tus neeg teb xov tooj "__has_builtin", uas tuaj yeem siv los txheeb xyuas cov haujlwm ua haujlwm.
  • Ntxiv ib qho tshiab built-in muaj nuj nqi "__builtin_roundeven" nrog rau kev siv lub rounding muaj nuj nqi teev nyob rau hauv lub ISO / IEC TS 18661 specification, zoo ib yam li "round", tab sis rounding ib feem ntau dua 0.5 li (mus rau ib tug loj tus nqi), tsawg dua 0.5 - nqis (rau xoom), thiab sib npaug rau 0.5 - pib los ntawm qhov sib luag ntawm tus lej kawg.
  • Rau AArch64 architecture, kev txhawb nqa rau SVE2 txuas ntxiv tau ntxiv thiab kev txhawb nqa rau SVE (Scalable Vector Extension) tau raug txhim kho, suav nrog kev txhawb nqa ntxiv rau SVE ACLE ua haujlwm thiab hom, thiab kev siv vectorization. Kev them nyiaj yug rau LSE (Large System Extensions) thiab TME (Transactional Memory Extension) tau nthuav dav. Ntxiv cov lus qhia tshiab uas tau npaj tseg hauv Armv8.5-A thiab Armv8.6-A, suav nrog cov lus qhia rau random tus lej cim, sib npaug, nco tag khi,
    bfloat16 thiab matrix multiplication. Ntxiv processor txhawb
    Arm Cortex-A77,
    Arm Cortex-A76AE,
    Arm Cortex-A65,
    Arm Cortex-A65AE,
    Arm Cortex-A34 thiab
    Marvell ThunderX3.

  • Ntxiv kev txhawb nqa rau ABI FDPIC (32-ntsis function pointers) rau ARM64. Rov tsim dua thiab ua kom zoo dua ntawm kev ua haujlwm 64-ntsis tus lej ua haujlwm. Ntxiv CPU txhawb
    Arm Cortex-A77,
    Arm Cortex-A76AE thiab
    Arm Cortex-M35P. Kev txhawb nqa rau ACLE cov ntaub ntawv ua cov lus qhia, suav nrog 32-ntsis SIMD, 16-ntsis sib npaug, latch arithmetic, thiab lwm yam DSP algorithm optimizations. Ntxiv kev sim txhawb rau ACLE CDE (Custom Datapath Extension) cov lus qhia.

  • Txhim kho qhov cim cim thiab vectorization hauv backend rau AMD GPUs raws li GCN microarchitecture.
  • Ntxiv kev txhawb nqa rau XMEGA-zoo li cov khoom siv rau AVR architecture
    ATtiny 202, ATtiny204, ATtiny402, ATtiny404, ATtiny406, ATtiny804, ATtiny806, ATtiny807, ATtiny1604, ATtiny1606, ATtiny1607, ATmega808, ATmega 809 AT1608, , ATmega1609 3208, ATmega3209 thiab ATmega4808.

  • Ib qho tshiab Intel ENQCMD cov lus qhia teeb tsa txuas ntxiv (-menqcmd) tau ntxiv rau IA-32 / x86-64 architectures. Ntxiv kev txhawb nqa rau Intel Cooperlake (-march = cooperlake, suav nrog AVX512BF16 ISA txuas ntxiv) thiab Tigerlake (-march=tigerlake, suav nrog MOVDIRI, MOVDIR64B thiab AVX512VP2INTERSECT ISA txuas ntxiv) CPUs.
  • Ib qho kev siv ntawm HSAIL (Heterogeneous System Architecture Intermediate Language) rau heterogeneous xam systems raws li HSA architecture tau raug deprecated thiab tej zaum yuav raug tshem tawm nyob rau hauv ib tug yav tom ntej tso.

Tau qhov twg los: opennet.ru

Ntxiv ib saib