Itusilẹ ti GCC 10 compiler suite

Lẹhin ọdun kan ti idagbasoke atejade Tu ti a free ṣeto ti compilers GCC 10.1, itusilẹ pataki akọkọ ni ẹka GCC 10.x tuntun. Ni ibamu pẹlu titun eto awọn nọmba itusilẹ, ẹya 10.0 ni a lo ninu ilana idagbasoke, ati ni kete ṣaaju itusilẹ ti GCC 10.1, ẹka GCC 11.0 ti wa tẹlẹ ni pipa, lori ipilẹ eyiti itusilẹ pataki ti o tẹle, GCC 11.1, yoo ṣẹda.

GCC 10.1 jẹ ohun akiyesi fun imuse ti ọpọlọpọ awọn imotuntun ni ede C ++ ti o dagbasoke fun boṣewa C ++ 20, awọn ilọsiwaju ti o jọmọ boṣewa ede C ti ọjọ iwaju (C2x), awọn iṣapeye tuntun ni awọn ẹhin alakojọ ati atilẹyin idanwo. aimi onínọmbà mode. Ni afikun, lakoko igbaradi ti ẹka tuntun kan, iṣẹ akanṣe naa gbe ibi ipamọ lati SVN si Git.

akọkọ iyipada:

  • Fi kun Ipo adanwo ti itupalẹ aimi"-fanalyzer“, eyiti o ṣe itupalẹ awọn ilana ilana ipanilaya ti orisun ti awọn ipa ipaniyan koodu ati ṣiṣan data ninu eto kan. Ipo naa lagbara lati ṣawari awọn iṣoro ni ipele akopọ, gẹgẹbi awọn ipe ilọpo meji si iṣẹ ọfẹ () fun agbegbe iranti kan, jijo oluṣapejuwe faili, imukuro ati gbigbe awọn itọka asan, wọle si awọn bulọọki iranti ominira, lilo awọn iye ti ko ni ibẹrẹ, ati bẹbẹ lọ. Lilo ipo tuntun fun koodu OpenSSL ti jẹ ki o ṣee ṣe lati ṣe idanimọ lewu palara.
  • Imudara awọn iṣapeye laarin ilana. Iwe-iwọle IPA-SRA (Interprocedural Scalar Pipin Rirọpo) ti jẹ atunṣe lati ṣiṣẹ ni akoko asopọ ati, ninu awọn ohun miiran, ni bayi yọ awọn iṣiro ati awọn iye ti ko lo pada. Ni ipo iṣapeye "-O2", aṣayan "-finline-awọn iṣẹ" ti ṣiṣẹ, eyiti o tun ṣe lati ṣe ojurere koodu iwapọ diẹ sii lori iṣẹ ṣiṣe. Iṣẹ ti heuristic fun imuṣiṣẹ iṣẹ inline ti ni iyara. Imugboroosi inline ati heuristics cloning iṣẹ le lo alaye nipa awọn sakani iye lati ṣe asọtẹlẹ imunadoko ti awọn iyipada kọọkan. Fun C++, išedede ti iru-orisun inagijẹ parsing ti ni ilọsiwaju.
  • Awọn iṣapeye Akoko Isopọ Imudara (LTO). Ti fi kun titun executable da silẹ lati tun alaye nipa awọn faili ohun pẹlu LTO bytecode. Awọn igbasilẹ LTO ti o jọra laifọwọyi pinnu nọmba awọn iṣẹ ṣiṣe nigbakanna ati, ti wọn ko ba le pinnu, lo alaye nipa nọmba awọn ohun kohun Sipiyu bi ifosiwewe parallelization. Ṣe afikun agbara lati compress LTO bytecode nipa lilo algoridimu zstd.
  • Ẹrọ iṣapeye ti o da lori awọn abajade ti profaili koodu (PGO - iṣapeye-itọnisọna profaili) ti ni ilọsiwaju, eyiti o ṣe agbekalẹ koodu to dara julọ ti o da lori itupalẹ awọn abuda ti ipaniyan koodu. Itọju profaili ilọsiwaju lakoko iṣakojọpọ ati iyapa koodu gbona/tutu. Nipasẹ aṣayan "-fprofile-iye»le le ṣe atẹle awọn iye profaili to 4, fun apẹẹrẹ fun awọn ipe aiṣe-taara ati pese alaye profaili to peye.
  • Sipesifikesonu siseto ti o jọra ti ṣe imuse fun awọn ede C, C++ ati Fortran Ṣii ACC 2.6, eyi ti o ṣe apejuwe awọn irinṣẹ fun piparẹ awọn iṣẹ lori awọn GPUs ati awọn ilana pataki gẹgẹbi NVIDIA PTX. Imuse ti boṣewa ti fẹrẹ pari ṢiiMP 5.0 (Open Olona-Processing), eyi ti o asọye API ati awọn ọna ti a lilo ni afiwe siseto ọna lori olona-mojuto ati arabara (CPU+ GPU/DSP) awọn ọna šiše pẹlu pín iranti ati vectorization sipo (SIMD). Awọn ẹya ti a ṣafikun gẹgẹbi awọn ipo aladani ikẹhin, ọlọjẹ ati awọn itọsọna lupu, aṣẹ ati awọn ikosile use_device_addr. Fun OpenMP ati OpenACC, atilẹyin ti ni afikun fun awọn iṣẹ gbigbe lori iran kẹrin (Fiji) ati iran karun AMD Radeon (GCN) GPUs (VEGA 10/VEGA 20).
  • Fun awọn ede ti idile C, iṣẹ “wiwọle” ti ṣafikun lati ṣapejuwe iraye si iṣẹ naa si awọn nkan ti o kọja nipasẹ itọkasi tabi itọka, ati lati ṣepọ iru awọn nkan bẹ pẹlu awọn ariyanjiyan odidi ti o ni alaye nipa iwọn awọn nkan naa. Lati ṣiṣẹ ni apapo pẹlu “iwọle”, abuda “iru” ni imuse lati rii iraye si ti ko tọ lati awọn iṣẹ olumulo, fun apẹẹrẹ, nigba kikọ awọn iye si agbegbe ni ita awọn aala ti orun. Paapaa ti a ṣafikun ni abuda “symver” si awọn aami alajọpọ ninu faili ELF pẹlu awọn nọmba ẹya kan pato.
  • Awọn ikilọ tuntun ti ṣafikun:
    • "-Wstring-afiwera" (ti ṣiṣẹ pẹlu "-Wextra") - kilo nipa wiwa awọn ọrọ ti o wa ninu eyiti a fiwewe odo pẹlu abajade ti pipe awọn iṣẹ strcmp ati strncmp, eyiti o jẹ deede si igbagbogbo nitori otitọ pe ipari gigun. ti ariyanjiyan kan tobi ju iwọn titobi lọ ni ariyanjiyan keji.
    • "-Wzero-ipari-bounds" (ti ṣiṣẹ pẹlu "-Warray-bounds") - kilo nipa iwọle si awọn eroja orun gigun ti odo, eyiti o le ja si atunkọ data miiran.
    • Awọn ikilọ “-Warray-bounds”, “-Wformat-overflow”, “-Wrestrict”, “-Wreturn-local-addr” ati “-Wstringop-overflow” ti pọ si lati faagun nọmba awọn ipo ita-jade ti o ti wa ni lököökan.
  • Ti ṣe imuse agbara lati ṣe pato awọn ohun kikọ jakejado taara ni awọn idamọ nipa lilo fifi ẹnọ kọ nkan lọwọlọwọ (UTF-8 nipasẹ aiyipada) dipo akiyesi UCN (\unNNNN tabi \UNNNNNNN). Fun apere:

    aimi const int π = 3;
    int gba_naïve_pi() {
    pada π;
    }

  • Fun ede C, apakan ti awọn ẹya tuntun ti o dagbasoke laarin boṣewa C2X ti ni imuse (ṣiṣẹ nipasẹ sisọ pato -std=c2x ati -std=gnu2x): atilẹyin fun “[[]]” sintasi ti farahan fun asọye awọn abuda bi ninu C ++ (fun apẹẹrẹ, [[gnu :: const]], [[fasiti]], [[fallthrough]] ati [[boya_unused]]. Ṣafikun atilẹyin fun sintasi “u8” fun asọye awọn iduro pẹlu awọn ohun kikọ UTF-8.
    Ti ṣafikun macros tuntun si . Fikun "%OB" ati "% Ob" awọn iyipada si strftime.

  • Ipo aiyipada fun C jẹ "-fno-common", eyiti o fun laaye fun iraye si daradara siwaju sii si awọn oniyipada agbaye lori diẹ ninu awọn iru ẹrọ.
  • Fun C ++, nipa awọn iyipada 16 ati awọn imotuntun ti ni imuse, ti o dagbasoke ni boṣewa C ++20. Pẹlu koko-ọrọ ti a ṣafikun “constinit”
    ati atilẹyin fun awọn amugbooro awoṣe ti jẹ imuse"awọn imọran". Awọn imọran gba ọ laaye lati ṣalaye eto awọn ibeere paramita awoṣe kan ti, ni akoko iṣakojọ, ṣe idinwo ṣeto awọn ariyanjiyan ti o le gba bi awọn aye awoṣe. Awọn imọran le ṣee lo lati yago fun awọn aiṣedeede ọgbọn laarin awọn ohun-ini ti awọn oriṣi data ti a lo laarin awoṣe ati awọn ohun-ini iru data ti awọn aye igbewọle.

  • G++ n pese wiwa ti ihuwasi aisọye ti o ṣẹlẹ nipasẹ iyipada awọn nkan igbagbogbo nipasẹ constexpr. Idinku agbara iranti nipasẹ alakojọ nigbati o n ṣe iṣiro constexpr. Ṣafikun awọn ikilọ titun "-Wmismatched-tags" ati "-Wredundant-tags".
  • Awọn aṣayan laini aṣẹ titun ti ni imọran:
    • "-fallocation-dce" lati yọ awọn orisii "tuntun" ati "paarẹ" awọn oniṣẹ kuro.
    • "-fprofile-partial-training" lati mu iṣapeye iwọn fun koodu ti ko ni ṣiṣe ikẹkọ.
    • "-fprofile-reproducible lati ṣakoso ipele ti atunṣe profaili.
    • "-fprofile-prefix-path" lati setumo iwe ilana orisun orisun ti a lo fun iran profaili ọtọtọ (fun "-fprofile-generate=profile_dir" ati "-fprofile-use=profile_dir").
  • Ninu ọrọ ikilọ fun awọn aṣayan ti a mẹnuba, awọn ọna asopọ hyperlinks ti pese ti o gba ọ laaye lati lọ si iwe fun awọn aṣayan wọnyi. Iyipada URL jẹ iṣakoso ni lilo aṣayan "-fdiagnostics-urls".
  • Ti fi kun oniṣẹ ẹrọ iṣaaju "__has_builtin", eyiti o le ṣee lo lati ṣayẹwo fun awọn iṣẹ ti a ṣe sinu.
  • Ṣafikun iṣẹ tuntun ti a ṣe sinu "__builtin_roundeven" pẹlu imuse ti iṣẹ iyipo ti a ṣalaye ninu sipesifikesonu ISO/IEC TS 18661, iru si “yika”, ṣugbọn apakan iyipo ti o tobi ju 0.5 soke (si iye ti o tobi), kere ju 0.5 - si isalẹ (si odo), ati dogba si 0.5 - ti o bere lati awọn ipele ti awọn penultimate nọmba.
  • Fun faaji AArch64, atilẹyin fun itẹsiwaju SVE2 ti ṣafikun ati atilẹyin fun SVE (Scalable Vector Extension) ti ni ilọsiwaju, pẹlu atilẹyin ti a ṣafikun fun awọn iṣẹ SVE ACLE ti a ṣe sinu ati awọn iru, ati lilo vectorization. Atilẹyin fun LSE (Awọn amugbooro Eto Nla) ati TME (Imugboroosi Iranti Iṣowo) ti pọ si. Ṣafikun awọn ilana tuntun ti a dabaa ni Armv8.5-A ati Armv8.6-A, pẹlu awọn ilana fun iran nọmba ID, iyipo, abuda ami ami iranti,
    bfloat16 ati isodipupo matrix. Afikun isise support
    Apa Cortex-A77,
    Apa Cortex-A76AE,
    Apa Cortex-A65,
    Apa Cortex-A65AE,
    Arm Cortex-A34 ati
    Marvell ThunderX3.

  • Atilẹyin ti a ṣafikun fun ABI FDPIC (awọn itọkasi iṣẹ 32-bit) fun ARM64. Atunṣe ati iṣapeye sisẹ ti awọn iṣẹ odidi 64-bit. Afikun atilẹyin Sipiyu
    Apa Cortex-A77,
    Arm Cortex-A76AE ati
    Apá Cortex-M35P. Atilẹyin ti o gbooro fun awọn ilana ṣiṣe data ACLE, pẹlu SIMD 32-bit, isodipupo 16-bit, iṣiro latch, ati awọn iṣapeye DSP algorithm miiran. Ṣafikun atilẹyin esiperimenta fun ACLE CDE (Itẹsiwaju Datapath Aṣa) awọn ilana.

  • Ilọsiwaju koodu ti o ni ilọsiwaju pataki ati isọdọtun ni ẹhin fun awọn GPUs AMD ti o da lori microarchitecture GCN.
  • Atilẹyin ti a ṣafikun fun awọn ẹrọ bii XMEGA fun faaji AVR
    ATtiny202, ATtiny204, ATtiny402, ATtiny404, ATtiny406, ATtiny804, ATtiny806, ATtiny807, ATtiny1604, ATtiny1606, ATtiny1607, ATtiny808, ATmegaAT809gaAT1608 , ATmega1609, ATmega3208 3209, ATmega4808 ati ATmega4809.

  • Itọnisọna Intel ENQCMD tuntun ṣeto itẹsiwaju faaji (-menqcmd) ti ṣafikun fun awọn faaji IA-32/x86-64. Atilẹyin ti a ṣafikun fun Intel Cooperlake (-march = cooperlake, pẹlu itẹsiwaju AVX512BF16 ISA) ati Tigerlake (-march = tigerlake, pẹlu MOVDIRI, MOVDIR64B ati AVX512VP2INTERSECT ISA awọn amugbooro) CPUs.
  • Imuse ti HSAIL (Ede Agbedemeji Ede Oniruuru System Architecture) fun awọn ọna ṣiṣe iširo oriṣiriṣi ti o da lori faaji HSA ti jẹ idiwọ ati pe yoo ṣee yọkuro ni idasilẹ ọjọ iwaju.

orisun: opennet.ru

Fi ọrọìwòye kun