Sakin GCC 10 compiler suite

Bayan shekara guda na ci gaba buga saki na free set na compilers GCC 10.1, babban fitowar farko a sabon reshen GCC 10.x. Daidai da sabon makirci Lambobin sakewa, an yi amfani da sigar 10.0 a cikin tsarin ci gaba, kuma jim kaɗan kafin a fito da GCC 10.1, reshen GCC 11.0 ya rigaya ya rabu, wanda a kan tushensa na gaba mai mahimmanci, GCC 11.1, za a kafa.

GCC 10.1 sananne ne don aiwatar da sabbin abubuwa da yawa a cikin yaren C ++ waɗanda aka haɓaka don ma'aunin C ++20, haɓakawa dangane da ma'aunin harshen C na gaba (C2x), sabbin haɓakawa a cikin masu tattara bayanan baya da goyan bayan gwaji. yanayin bincike a tsaye. Bugu da kari, a lokacin shirye-shiryen wani sabon reshe, aikin ya canja wurin ajiyar kaya daga SVN zuwa Git.

Main canji:

  • Kara yanayin gwaji a tsaye"-fanalyzer", wanda ke aiwatar da bincike-bincike tsakanin hanyoyin samar da albarkatu na hanyoyin aiwatar da code da kwararar bayanai a cikin shirin. Yanayin yana da ikon gano matsaloli a matakin haɗawa, kamar kira sau biyu zuwa aikin kyauta () don yanki ɗaya na ƙwaƙwalwar ajiya, leaks ɗin bayanin fayil, ɓarke ​​​​da wucewar ma'anoni mara amfani, samun damar ƴantattun tubalan ƙwaƙwalwar ajiya, ta amfani da ƙimar da ba a fara ba, da sauransu. Amfani da sabon yanayin don lambar OpenSSL ya riga ya ba da damar ganowa m rauni.
  • Ingantattun ingantattun abubuwan ingantawa tsakanin hanyoyin sadarwa. An sake fasalin izinin IPA-SRA (Interprocedural Scalar Shared Replacement) don yin aiki a lokacin ɗaure kuma, a tsakanin sauran abubuwa, yanzu yana cire ƙididdiga da dawo da ƙimar da ba a yi amfani da su ba. A cikin yanayin haɓakawa na "-O2", zaɓin "-finline-functions" yana kunna zaɓi, wanda aka sake kunnawa don fifita ƙarin ƙaramin ƙima akan aikin aiwatarwa. An haɓaka aikin heuristic don ƙaddamar da aikin layi. Faɗawar layi da aikin heuristics na cloning na iya amfani da bayanai game da jeri mai ƙima don hasashen tasirin sauye-sauyen mutum ɗaya. Don C++, an inganta daidaiton nau'in laƙabi na ƙirƙira.
  • Ingantattun Haɗin Lokacin Haɓaka (LTO). An ƙara sabon aiwatarwa da-zuba don sake saita bayanai game da fayilolin abu tare da LTO bytecode. Layin LTO yana wucewa ta atomatik yana ƙayyade adadin masu gudanar da ayyuka a lokaci guda kuma, idan ba za a iya tantance su ba, yi amfani da bayanai game da adadin nau'in CPU azaman abin daidaitawa. Ƙara ikon damfara LTO bytecode ta amfani da zstd algorithm.
  • An inganta tsarin ingantawa dangane da sakamakon bayanan lambar (PGO-Profile-guided ingantawa), wanda ke haifar da mafi kyawun lambobi dangane da nazarin halaye na aiwatar da lambar. Ingantattun gyare-gyaren bayanan martaba yayin haɗawa da rabuwa mai zafi/sanyi. Ta hanyar zabin"-fprofile-daraja» yanzu zai iya saka idanu har zuwa ƙimar bayanan martaba guda 4, misali don kiran kai tsaye da samar da ƙarin cikakkun bayanan bayanan martaba.
  • Daidaitaccen ƙayyadaddun shirye-shiryen da aka aiwatar don C, C++ da Harsunan Fortran Buɗe ACC 2.6, wanda ke bayyana kayan aiki don sauke ayyuka akan GPUs da na'urori na musamman kamar NVIDIA PTX. Aiwatar da ma'auni ya kusan kammala BuɗeMP 5.0 (Buɗe Multi-Processing), wanda ke bayyana API da hanyoyin yin amfani da hanyoyin shirye-shirye na layi ɗaya akan tsarin multi-core da hybrid (CPU+GPU/DSP) tare da haɗin ƙwaƙwalwar ajiya da raka'a vectorization (SIMD). Ƙarin fasalulluka kamar ƙa'idodin sirri na ƙarshe, duba da umarnin madauki, oda da maganganun amfani_device_addr. Don OpenMP da OpenACC, an ƙara tallafi don ƙaddamar da ayyuka akan ƙarni na huɗu (Fiji) da AMD Radeon (GCN) GPUs na ƙarni na biyar (VEGA 10/VEGA 20).
  • Don harsunan dangin C, an ƙara aikin "shigarwa" don bayyana damar aikin ga abubuwan da aka wuce ta hanyar tunani ko ma'ana, da kuma haɗa irin waɗannan abubuwa tare da mahawara mai lamba masu ɗauke da bayanai game da girman abubuwan. Don yin aiki tare da "shigarwa", ana aiwatar da sifa na "nau'in" don gano hanyar da ba daidai ba daga ayyukan mai amfani, misali, lokacin rubuta ƙimar zuwa wani yanki da ke waje da iyakokin tsararru. Hakanan an ƙara shine sifa ta "symver" zuwa alamomin haɗin gwiwa a cikin fayil ɗin ELF tare da takamaiman lambobi.
  • An ƙara sabbin gargaɗi:
    • "-Wstring-kwatanta" (wanda aka kunna tare da "-Wextra") - yayi gargadi game da kasancewar maganganun da aka kwatanta da sifili tare da sakamakon kiran ayyukan strcmp da strncmp, wanda yayi daidai da akai-akai saboda gaskiyar cewa tsawon lokaci. na hujja ɗaya ya fi girman girman jeri a cikin hujja ta biyu .
    • "-Wzero-length-bounds" (an kunna shi tare da "-Warray-bounds") - yayi kashedin game da samun damar abubuwan da ke da tsayin sifili, wanda zai iya haifar da sake rubuta wasu bayanai.
    • An faɗaɗa faɗakarwar "-Warray-bounds", "-Wformat-overflow", "-Wrestrict", "-Wreturn-local-addr" da "-Wstringop-overflow" gargadi don faɗaɗa adadin abubuwan da ba su da iyaka. wadanda ake sarrafa.
  • An aiwatar da ikon tantance manyan haruffa kai tsaye a cikin masu ganowa ta amfani da rufaffiyar rikodi na yanzu (UTF-8 ta tsohuwa) maimakon bayanin UCN (\uNNNN ko \UNNNNNNNN). Misali:

    a tsaye const int π = 3;
    int samun_naïve_pi() {
    dawo π;
    }

  • Don yaren C, an aiwatar da wani ɓangare na sabbin fasalulluka waɗanda aka haɓaka a cikin ma'aunin C2X (wanda aka kunna ta hanyar tantancewa -std=c2x da -std=gnu2x): goyan bayan tsarin “[]]” ya bayyana don ayyana halaye kamar a cikin C++ (misali, [[gnu ::const]], [[deprecated]], [[fallthrough]] da [[wataƙila_ba a yi amfani da shi]]] .Ƙara goyan baya ga ma'anar "u8" don ma'anar ma'auni tare da haruffa UTF-8.
    An ƙara sabbin macro zuwa . An ƙara "% OB" da "% Ob" maye gurbin zuwa strftime.

  • Yanayin da aka saba don C shine "-fno-common", wanda ke ba da damar samun ingantaccen dama ga masu canjin duniya akan wasu dandamali.
  • Don C++, an aiwatar da kusan canje-canje 16 da sabbin abubuwa, waɗanda aka haɓaka cikin ma'aunin C++20. Ciki har da ƙarin kalmar "constinit"
    kuma an aiwatar da tallafi don haɓaka samfuri"ra'ayoyi". Ra'ayoyi suna ba ku damar ayyana saitin buƙatun ma'aunin samfuri waɗanda, a lokacin haɗawa, iyakance saitin gardama waɗanda za a iya karɓa azaman sigogin samfuri. Za a iya amfani da ra'ayoyin don guje wa rashin daidaiton ma'ana tsakanin kaddarorin nau'ikan bayanan da aka yi amfani da su a cikin samfuri da kaddarorin nau'in bayanai na sigogin shigarwa.

  • G++ yana ba da gano halayen da ba a bayyana ba ta hanyar canza abubuwa ta yau da kullun ta hanyar constexpr. Rage yawan amfani da žwažwalwa ta mai tarawa lokacin da ake lissafin constexpr. An ƙara sabbin gargaɗin "-Wmismatched-tags" da "-Wredundant-tags".
  • An gabatar da sabbin zaɓuɓɓukan layin umarni:
    • "-fallocation-dce" don cire nau'i-nau'i marasa mahimmanci na "sabbi" da "share" masu aiki.
    • "-fprofile-partial-training" don musaki girman haɓakawa don lambar da ba ta da aikin horo.
    • "-fprofile-reproducible don sarrafa matakin sake fasalin bayanan martaba.
    • "-fprofile-prefix-path" don ayyana tushen tushen tushen tsarin ginin da aka yi amfani da shi don tsararrun bayanan daban (don "-fprofile-generate=profile_dir" da "-fprofile-use=profile_dir").
  • A cikin rubutun faɗakarwa don zaɓuɓɓukan da aka ambata, ana ba da hanyoyin haɗin kai waɗanda ke ba ku damar zuwa takaddun waɗannan zaɓuɓɓukan. Ana sarrafa musanya URL ta amfani da zaɓin "-fdiagnostics-urls".
  • Ƙaddamar da mai aiwatarwa"__ya_builtin", wanda za'a iya amfani dashi don bincika ayyukan ginanniyar.
  • An ƙara sabon ginanniyar aikin "__builtin_roundeven" tare da aiwatar da aikin zagaye da aka ayyana a cikin ƙayyadaddun ISO/IEC TS 18661, mai kama da "zagaye", amma ɓangaren zagaye mafi girma sama da 0.5 sama (zuwa babban darajar), ƙasa da 0.5 - ƙasa (zuwa sifili), kuma daidai da 0.5 - farawa daga daidaitattun lambobi na penultimate.
  • Don tsarin gine-gine na AArch64, an ƙara goyon baya ga tsawo na SVE2 kuma an inganta goyon baya ga SVE (Scalable Vector Extension), ciki har da ƙarin goyon baya don ginanniyar ayyukan SVE ACLE da nau'ikan, da kuma amfani da vectorization. An faɗaɗa tallafi ga LSE (Babban Tsarin Tsara) da TME (Ƙwararren Ƙwararren Ƙwararren Ƙwararren Ƙwararren Ƙwararren Ƙwararren Ƙwararren Ƙwararren Ƙwararren Ƙwararren Ƙwararren Ƙwararren Ƙwararren Ƙwararren Ƙwararren Ƙwararren Ƙwararren Ƙwararren Ƙwararren Ƙwararren Ƙwararren Ƙwararren Ƙwararren Ƙwararren Ƙwaƙwalwa ) ya yi. Ƙara sabbin umarni da aka gabatar a cikin Armv8.5-A da Armv8.6-A, gami da umarni don tsara lambar bazuwar, zagaye, daure alamar ƙwaƙwalwar ajiya,
    bfloat16 da matrix multiplication. Ƙara goyon bayan mai sarrafawa
    Arm Cortex-A77,
    Arm Cortex-A76AE,
    Arm Cortex-A65,
    Arm Cortex-A65AE,
    Arm Cortex-A34 da
    Marvell ThunderX3.

  • Ƙara tallafi don ABI FDPIC (manufofin ayyuka na 32-bit) don ARM64. Sake tsarawa da ingantaccen aiki na ayyukan intiger 64-bit. Ƙara goyon bayan CPU
    Arm Cortex-A77,
    Arm Cortex-A76AE da
    Arm Cortex-M35P. Faɗaɗɗen tallafi don umarnin sarrafa bayanan ACLE, gami da 32-bit SIMD, 16-bit multiplication, latch arithmetic, da sauran ingantawar DSP algorithm. Ƙara goyan bayan gwaji don ACLE CDE (Custom Datapath Extension) umarnin.

  • Mahimman ingantacciyar ƙirar ƙira da ƙira a cikin bayana don AMD GPUs dangane da microarchitecture na GCN.
  • Ƙara tallafi don na'urori masu kama da XMEGA don gine-ginen AVR
    ATtiny202, ATtiny204, ATtiny402, ATtiny404, ATtiny406, ATtiny804, ATtiny806, ATtiny807, ATtiny1604, ATtiny1606, ATtiny1607, ATtiny808, ATmegaAT809 1608, ATmega1609, ATmega3208 3209, ATmega4808 da ATmega4809.

  • An ƙara sabon tsarin koyarwar Intel ENQCMD saitin haɓaka gine-gine (-menqcmd) don gine-ginen IA-32/x86-64. Ƙara tallafi don Intel Cooperlake (-march = cooperlake, ya haɗa da tsawo na AVX512BF16 ISA) da Tigerlake (-march = tigerlake, ya haɗa da MOVDIRI, MOVDIR64B da AVX512VP2INTERSECT ISA kari) CPUs.
  • Aiwatar da HSAIL (Matsakaicin Harshe na Tsare-tsare Tsare-tsare) don tsarin ƙididdiga daban-daban dangane da gine-ginen HSA ya ƙare kuma ana iya cire shi a cikin sakin gaba.

source: budenet.ru

Add a comment