Rhyddhau cyfres casglwyr GCC 10

Ar ôl blwyddyn o ddatblygiad cyhoeddi rhyddhau set am ddim o gasglwyr GCC 10.1, y datganiad mawr cyntaf yn y gangen 10.x GCC newydd. Yn unol â cynllun newydd niferoedd rhyddhau, defnyddiwyd fersiwn 10.0 yn y broses ddatblygu, ac yn fuan cyn rhyddhau GCC 10.1, roedd cangen GCC 11.0 eisoes wedi dod i ben, ac ar y sail y byddai'r datganiad sylweddol nesaf, GCC 11.1, yn cael ei ffurfio.

Mae GCC 10.1 yn nodedig am weithredu llawer o arloesiadau yn yr iaith C++ a ddatblygwyd ar gyfer y safon C++20, gwelliannau sy'n ymwneud â safon iaith C yn y dyfodol (C2x), optimeiddiadau newydd yng nghefnau'r casglwyr a chymorth arbrofol modd dadansoddi statig. Yn ogystal, wrth baratoi cangen newydd, trosglwyddodd y prosiect yr ystorfa o SVN i Git.

Y prif newidiadau:

  • Wedi adio dull arbrofol o ddadansoddi statig "-fanalyzer“, sy'n perfformio dadansoddiad rhyng-weithdrefnol sy'n defnyddio llawer o adnoddau o lwybrau gweithredu cod a llif data mewn rhaglen. Mae'r modd yn gallu canfod problemau yn y cam llunio, megis galwadau dwbl i'r swyddogaeth rhad ac am ddim () ar gyfer un ardal cof, disgrifydd ffeil yn gollwng, dadgyfeirio a phasio awgrymiadau nwl, cyrchu blociau cof wedi'u rhyddhau, gan ddefnyddio gwerthoedd anghyfarwydd, ac ati. Mae'r defnydd o'r modd newydd ar gyfer cod OpenSSL eisoes wedi ei gwneud hi'n bosibl ei adnabod bregusrwydd peryglus.
  • Gwell optimeiddiadau rhyng-weithdrefnol. Mae'r tocyn IPA-SRA (Adnewyddu Scalar a Rennir Rhyngweithdrefnol) wedi'i ailgynllunio i weithio ar amser rhwymo ac, ymhlith pethau eraill, mae bellach yn dileu gwerthoedd a gyfrifwyd ac a ddychwelwyd heb eu defnyddio. Yn y modd optimeiddio "-O2", mae'r opsiwn "-finline-functions" wedi'i alluogi, sy'n cael ei ail-diwnio i ffafrio cod mwy cryno dros berfformiad gweithredu. Mae gwaith yr hewristig ar gyfer defnyddio swyddogaethau mewnol wedi'i gyflymu. Gall hewristeg ehangu mewnol a chlonio swyddogaethau bellach ddefnyddio gwybodaeth am ystodau gwerth i ragfynegi effeithiolrwydd trawsnewidiadau unigol. Ar gyfer C++, mae cywirdeb dosrannu alias math wedi'i wella.
  • Gwell Optimeiddio Amser Cysylltu (LTO). Ychwanegwyd gweithredadwy newydd lto-dympio i ailosod gwybodaeth am ffeiliau gwrthrych gyda chod byte LTO. Mae pasio LTO cyfochrog yn pennu nifer y tasgau gwneud sy'n rhedeg ar yr un pryd yn awtomatig ac, os na ellir eu pennu, defnyddiwch wybodaeth am nifer y creiddiau CPU fel ffactor parallelization. Ychwanegwyd y gallu i gywasgu bytecode LTO gan ddefnyddio'r algorithm zstd.
  • Mae'r mecanwaith optimeiddio sy'n seiliedig ar ganlyniadau proffilio cod (PGO - Optimization dan arweiniad Proffil) wedi'i wella, sy'n cynhyrchu cod mwy optimaidd yn seiliedig ar ddadansoddiad o nodweddion gweithredu cod. Gwell cynnal a chadw proffil yn ystod y gwaith llunio a gwahanu cod poeth/oer. Trwy'r opsiwn "-fprofile-gwerthoedd» nawr yn gallu monitro hyd at 4 gwerth proffil, er enghraifft ar gyfer galwadau anuniongyrchol a darparu gwybodaeth broffil fwy manwl gywir.
  • Manyleb rhaglennu cyfochrog wedi'i gweithredu ar gyfer ieithoedd C, C++ a Fortran OpenACC 2.6, sy'n diffinio offer ar gyfer dadlwytho gweithrediadau ar GPUs a phroseswyr arbenigol megis NVIDIA PTX. Mae gweithrediad y safon bron wedi'i gwblhau Agor MP 5.0 (Aml-Brosesu Agored), sy'n diffinio'r API a dulliau o gymhwyso dulliau rhaglennu cyfochrog ar systemau aml-graidd a hybrid (CPU + GPU / DSP) gydag unedau cof a fectoreiddio a rennir (SIMD). Nodweddion ychwanegol megis amodau preifat olaf, cyfarwyddiadau sganio a dolen, trefn a mynegiadau use_device_addr. Ar gyfer OpenMP ac OpenACC, mae cefnogaeth wedi'i hychwanegu ar gyfer gweithrediadau dadlwytho ar GPUs AMD Radeon (GCN) pedwaredd cenhedlaeth (Fiji) a phumed cenhedlaeth (VEGA 10 / VEGA 20).
  • Ar gyfer ieithoedd y teulu C, mae'r swyddogaeth “mynediad” wedi'i hychwanegu i ddisgrifio mynediad y swyddogaeth i wrthrychau a basiwyd trwy gyfeirnod neu bwyntydd, ac i gysylltu gwrthrychau o'r fath â dadleuon cyfanrif sy'n cynnwys gwybodaeth am faint y gwrthrychau. I weithio ar y cyd â “mynediad”, gweithredir y briodwedd “math” i ganfod mynediad anghywir o swyddogaethau defnyddwyr, er enghraifft, wrth ysgrifennu gwerthoedd i ardal y tu allan i ffiniau'r arae. Ychwanegir hefyd y priodoledd "symver" i symbolau cysylltiol mewn ffeil ELF gyda rhifau fersiwn penodol.
  • Ychwanegwyd rhybuddion newydd:
    • “-Wstring-compare” (wedi'i alluogi gyda “-Wextra”) - yn rhybuddio am bresenoldeb ymadroddion lle mae sero yn cael ei gymharu â chanlyniad galw'r ffwythiannau strcmp a strncmp, sy'n cyfateb i gysonyn oherwydd y ffaith bod yr hyd o un ddadl yn fwy na maint yr arae yn yr ail ddadl.
    • Mae "-Wzero-length-bounds" (wedi'i alluogi gyda "-Warray-bounds") - yn rhybuddio am gyrchu elfennau arae o ddim hyd, a all arwain at drosysgrifo data arall.
    • Mae'r rhybuddion “-Warray-bounds”, “-Wformat-overflow”, “-Wrestrict”, “-Wreturn-local-addr” a “-Wstringop-overflow” wedi'u hehangu i ehangu nifer y sefyllfaoedd all-fynedol. sy'n cael eu trin.
  • Wedi gweithredu'r gallu i nodi nodau eang yn uniongyrchol mewn dynodwyr gan ddefnyddio'r amgodiad cyfredol (UTF-8 yn ddiofyn) yn hytrach na nodiant UCN (\uNNNN neu \UNNNNNNN). Er enghraifft:

    const statig int π = 3;
    int get_naïve_pi() {
    dychwelyd π;
    }

  • Ar gyfer yr iaith C, mae cyfran o nodweddion newydd a ddatblygwyd o fewn y safon C2X wedi'i weithredu (wedi'i alluogi trwy nodi -std=c2x a -std=gnu2x): mae cefnogaeth i'r gystrawen “[[]]” wedi ymddangos ar gyfer diffinio priodoleddau fel yn C++ (er enghraifft, [[gnu ::const]], [[anghymeradwy]], [[fallthrough]] a [[efallai_unused]]. Ychwanegwyd cefnogaeth i gystrawen "u8" ar gyfer diffinio cysonion gyda nodau UTF-8.
    Ychwanegwyd macros newydd at . Ychwanegwyd eilyddion "%OB" a "%Ob" i strftime.

  • Y modd rhagosodedig ar gyfer C yw "-fno-common", sy'n caniatáu mynediad mwy effeithlon i newidynnau byd-eang ar rai platfformau.
  • Ar gyfer C++, mae tua 16 o newidiadau ac arloesiadau wedi'u rhoi ar waith, a ddatblygwyd yn safon C++20. Gan gynnwys yr allweddair ychwanegol “constinit”
    ac mae cefnogaeth ar gyfer estyniadau templed wedi'i weithredu "cysyniadau" . Mae cysyniadau'n caniatáu ichi ddiffinio set o ofynion paramedr templed sydd, ar amser llunio, yn cyfyngu ar y set o ddadleuon y gellir eu derbyn fel paramedrau templed. Gellir defnyddio'r cysyniadau i osgoi anghysondebau rhesymegol rhwng priodweddau'r mathau o ddata a ddefnyddir yn y templed a phriodweddau math data'r paramedrau mewnbwn.

  • Mae G++ yn canfod ymddygiad anniffiniedig a achosir gan newid gwrthrychau cyson trwy constexpr. Llai o ddefnydd cof gan y casglwr wrth gyfrifo consstexpr. Ychwanegwyd rhybuddion newydd "-Wmismatched-tags" a "-Wredundant-tags".
  • Mae opsiynau llinell orchymyn newydd wedi'u cynnig:
    • "-fallocation-dce" i gael gwared ar barau diangen o weithredwyr "newydd" a "dileu".
    • "-fprofile-partial-training" i analluogi optimization maint ar gyfer cod nad oes ganddo rediad hyfforddi.
    • " -fprofile-reproducible i reoli lefel atgynhyrchu proffil.
    • "-fprofile-prefix-path" i ddiffinio'r cyfeiriadur adeiladu ffynhonnell sylfaen a ddefnyddir ar gyfer cynhyrchu proffil ar wahân (ar gyfer "-fprofile-generate=profile_dir" a "-fprofile-use=profile_dir").
  • Yn y testun rhybudd ar gyfer yr opsiynau a grybwyllwyd, darperir hyperddolenni sy'n eich galluogi i fynd i'r ddogfennaeth ar gyfer yr opsiynau hyn. Mae amnewid URL yn cael ei reoli gan ddefnyddio'r opsiwn "-fdiagnostics-urls".
  • Ychwanegwyd gweithredwr rhagbrosesydd "__wedi_adeiladu", y gellir ei ddefnyddio i wirio am swyddogaethau adeiledig.
  • Ychwanegwyd swyddogaeth adeiledig newydd "__builtin_roundeven" gyda gweithrediad y swyddogaeth dalgrynnu a ddiffinnir ym manyleb ISO/IEC TS 18661, yn debyg i "rownd", ond talgrynnu rhan sy'n fwy na 0.5 i fyny (i werth mwy), llai na 0.5 - i lawr (i sero), ac yn hafal i 0.5 - gan ddechrau o gydraddoldeb y digid olaf ond un.
  • Ar gyfer pensaernïaeth AArch64, mae cefnogaeth i'r estyniad SVE2 wedi'i ychwanegu ac mae cefnogaeth ar gyfer SVE (Estyniad Fector Scalable) wedi'i wella, gan gynnwys cefnogaeth ychwanegol ar gyfer swyddogaethau a mathau SVE ACLE adeiledig, a'r defnydd o fectoreiddio. Mae cefnogaeth ar gyfer LSE (Estyniadau System Fawr) a TME (Estyniad Cof Trafodol) wedi'i ehangu. Ychwanegwyd cyfarwyddiadau newydd a gynigir yn Armv8.5-A ac Armv8.6-A, gan gynnwys cyfarwyddiadau ar gyfer cynhyrchu rhifau ar hap, talgrynnu, rhwymo tag cof,
    bfloat16 a lluosi matrics. Ychwanegwyd cefnogaeth prosesydd
    Cortecs braich-A77,
    Cortecs Braich-A76AE,
    Cortecs braich-A65,
    Cortecs Braich-A65AE,
    Cortecs Braich-A34 a
    Marvell ThunderX3.

  • Cefnogaeth ychwanegol i ABI FDPIC (awgrymwyr swyddogaeth 32-bit) ar gyfer ARM64. Prosesu wedi'i ailgynllunio a'i optimeiddio o weithrediadau cyfanrif 64-did. Ychwanegwyd cefnogaeth CPU
    Cortecs braich-A77,
    Braich Cortex-A76AE a
    Cortecs braich-M35P. Cefnogaeth estynedig ar gyfer cyfarwyddiadau prosesu data ACLE, gan gynnwys SIMD 32-did, lluosi 16-did, rhifyddeg clicied, ac optimeiddio algorithmau DSP eraill. Ychwanegwyd cefnogaeth arbrofol ar gyfer cyfarwyddiadau ACLE CDE (Custom Datapath Extension).

  • Gwelliant sylweddol o ran cynhyrchu cod a fectoreiddio yn y backend ar gyfer GPUs AMD yn seiliedig ar ficrosaernïaeth GCN.
  • Cefnogaeth ychwanegol ar gyfer dyfeisiau tebyg i XMEGA ar gyfer pensaernïaeth AVR
    ATtiny202, ATtiny204, ATtiny402, ATtiny404, ATtiny406, ATtiny804, ATtiny806, ATtiny807, ATtiny1604, ATtiny1606, ATtiny1607, ATmega808, ATmega809, ATtiny1608, ATtiny1609, ATtiny3208 3209, ATmega4808 ac ATmega4809.

  • Mae estyniad pensaernïaeth set gyfarwyddiadau Intel ENQCMD newydd (-menqcmd) wedi'i ychwanegu ar gyfer pensaernïaeth IA-32 / x86-64. Cefnogaeth ychwanegol i Intel Cooperlake (-march = cooperlake, yn cynnwys yr estyniad AVX512BF16 ISA) a Tigerlake (-march = tigerlake, yn cynnwys yr estyniadau MOVDIRI, MOVDIR64B ac AVX512VP2INTERSECT ISA).
  • Mae gweithredu'r HSAIL (Iaith Ganolradd Pensaernïaeth System Heterogenaidd) ar gyfer systemau cyfrifiadurol heterogenaidd yn seiliedig ar bensaernïaeth HSA wedi'i anghymeradwyo ac mae'n debygol y caiff ei ddileu mewn datganiad yn y dyfodol.

Ffynhonnell: opennet.ru

Ychwanegu sylw