Human sa usa ka tuig nga kalamboan pagpagawas sa usa ka libre nga hugpong sa mga compiler , ang unang dakong pagpagawas sa bag-ong sanga sa GCC 10.x. Sumala sa pagnumero sa pagpagawas, ang bersyon 10.0 gigamit atol sa pag-develop, ug wala madugay sa wala pa ang pagpagawas sa GCC 10.1, usa ka sanga sa GCC 11.0 ang na-fork na, nga mao ang basehan alang sa sunod nga mayor nga pagpagawas sa GCC 11.1.
Ang GCC 10.1 nailhan tungod sa pagpatuman niini sa daghang mga inobasyon sa pinulongan nga C++ nga gihimo alang sa sumbanan nga C++20, mga pag-uswag nga may kalabotan sa umaabot nga sumbanan sa pinulongan nga C (C2x), bag-ong mga pag-optimize sa mga backend sa compiler, ug suporta sa eksperimento. Dugang pa, agig pagpangandam alang sa bag-ong sanga, gibalhin sa proyekto ang repository gikan sa SVN ngadto sa Git.
nag-unang :
- eksperimental nga estatikong pag-analisar nga paagi "", nga naghimo og resource-intensive interprocedural analysis sa mga code execution paths ug data flows sa usa ka programa. Ang mode makahimo sa pag-detect sa mga problema sa oras sa pag-compile sama sa double calls sa free() function para sa parehas nga memory area, file descriptor leaks, dereferencing ug pagpasa sa null pointers, pag-access sa freed memory blocks, paggamit sa uninitialized values, ug uban pa. Ang paggamit sa bag-ong mode para sa OpenSSL code nagtugot na kanato sa pag-ila .
- Gipauswag ang interprocedural optimizations. Ang IPA-SRA (Interprocedural Scalar Replacement of Shared Values) pass gi-refactor aron modagan sa link time ug, lakip sa ubang mga butang, karon nagtangtang sa wala magamit nga computed ug returned values. Ang -finline-functions option gipagana sa -O2 optimization mode ug gi-retune aron paboran ang compact code kaysa runtime performance. Gipaspasan ang inline function unrolling heuristic. Ang inline unrolling ug function cloning heuristic makagamit na karon sa range information aron matagna ang kaepektibo sa indibidwal nga mga conversion. Para sa C++, gipauswag ang katukma sa type-based alias analysis.
- Gipauswag nga link-time optimizations (LTO). Gidugang ang bag-ong executable. Aron i-reset ang impormasyon bahin sa mga object file gamit ang LTO bytecode. Sa parallel LTO runs, ang gidaghanon sa dungan nga nagdagan nga make task awtomatiko na nga ma-detect ug, kung dili kini matino, ang gidaghanon sa mga CPU core gigamit isip parallelization factor. Ang LTO bytecode compression gamit ang zstd algorithm gidugang na.
- Gipauswag ang mekanismo sa Profile-Guided Optimization (PGO). Nagmugna kini og mas maayo nga code base sa pag-analisar sa mga kinaiya sa pagpatuman sa code. Gipauswag ang pagsubay sa profile atol sa compilation ug ang pagbulag sa init/bugnaw nga code. Pinaagi sa "» Mahimo ka na karon nga makasubay hangtod sa 4 ka mga kantidad sa profile, pananglitan para sa dili direkta nga mga tawag ug aron makahatag og mas tukma nga impormasyon sa profile.
- Usa ka parallel programming specification ang gipatuman para sa C, C++, ug Fortran. , nga naghubit sa mga paagi alang sa pagbalhin sa mga operasyon ngadto sa mga GPU ug espesyalisadong mga processor sama sa NVIDIA PTX. Hapit na makompleto ang sumbanan. (Open Multi-Processing), nga naghubit sa API ug mga pamaagi alang sa pag-apply sa parallel programming techniques sa multi-core ug hybrid (CPU+GPU/DSP) systems nga adunay shared memory ug vectorization units (SIMD). Ang mga feature sama sa lastprivate conditionals, scan ug loop directives, order ug use_device_addr expressions gidugang. Ang offloading support para sa OpenMP ug OpenACC gidugang sa fourth-generation (Fiji) ug fifth-generation (VEGA 10/VEGA 20) AMD Radeon (GCN) GPUs.
- Para sa mga C-family languages, ang "access" function gidugang aron ihulagway ang function access sa mga butang nga gipasa pinaagi sa reference o pointer, ug aron i-associate ang maong mga butang sa mga integer argument nga adunay impormasyon sa gidak-on sa butang. Ang "type" attribute gipatuman aron molihok kauban sa "access" aron makamatikod sa dili balido nga access gikan sa mga function nga gihubit sa tiggamit, sama sa pagsulat sa mga kantidad sa usa ka lugar sa gawas sa mga utlanan sa usa ka array. Ang "symver" attribute gidugang usab aron i-associate ang mga simbolo sa usa ka ELF file nga adunay piho nga mga numero sa bersyon.
- Bag-ong mga pasidaan gidugang:
- "-Wstring-compare" (gi-enable gamit ang "-Wextra") - Nagpasidaan bahin sa mga ekspresyon diin ang zero gitandi sa resulta sa pagtawag sa mga function sa strcmp ug strncmp, nga katumbas sa usa ka constant tungod sa gitas-on sa usa ka argumento nga mas dako kaysa sa gidak-on sa array sa ikaduhang argumento.
- "-Wzero-length-bounds" (gipaandar gamit ang "-Warray-bounds") - Nagpasidaan bahin sa pag-access sa zero-length array elements, nga mahimong mosangpot sa pag-overwrite sa ubang data.
- Ang mga pasidaan nga "-Warray-bounds", "-Wformat-overflow", "-Wrestrict", "-Wreturn-local-addr", ug "-Wstringop-overflow" gipalapdan aron maapil ang mas lapad nga han-ay sa mga sitwasyon nga wala sa utlanan.
- Ang abilidad sa direktang pagtino sa lapad nga mga karakter sa mga identifier gipatuman na, gamit ang kasamtangang encoding (UTF-8 isip default) imbes nga UCN notation (\uNNNN o \UNNNNNNNNN). Pananglitan:
estatikong const int π = 3;
int get_naïve_pi() {
ibalik ang π;
} - Daghang bag-ong mga bahin nga naugmad sulod sa C2X standard ang gipatuman para sa C language (gipaandar pinaagi sa pag-specify sa -std=c2x ug -std=gnu2x): ang suporta para sa "[[]]" syntax gidugang para sa pag-define sa mga attribute sama sa C++ (pananglitan, [[gnu::const]], [[deprecated]], [[fallthrough]], ug [[maybe_unused]]. Ang suporta para sa "u8" syntax gidugang para sa pag-define sa mga constant gamit ang UTF-8 nga mga karakter.
Bag-ong mga macro ang gidugang sa Ang mga pag-ilis nga "%OB" ug "%Ob" gidugang na sa strftime. - Ang default mode alang sa C mao ang "-fno-common", nga nagtugot alang sa mas episyente nga pag-access sa mga global variable sa pipila nga mga platform.
- Ang C++ nakapatuman na og gibana-bana nga 16 ka mga pagbag-o ug inobasyon, nga naugmad sa C++20 standard. Apil niini ang pagdugang sa "constinit" keyword.
ug ang suporta para sa mga template extension gipatuman na."Ang mga konsepto nagtugot kanimo sa pagtino sa usa ka hugpong sa mga kinahanglanon alang sa mga parameter sa template nga, sa oras sa pag-compile, naglimite sa hugpong sa mga argumento nga mahimong madawat isip mga parameter sa template. Ang mga konsepto magamit aron malikayan ang mga lohikal nga pagkadili-konsistente tali sa mga kabtangan sa mga tipo sa datos nga gigamit sulod sa usa ka template ug ang mga kabtangan sa mga tipo sa datos sa mga input parameter." - Nakamatikod na karon ang G++ sa wala matino nga pamatasan nga gipahinabo sa pag-usab sa mga kanunay nga butang pinaagi sa constexpr. Nakunhuran ang konsumo sa memorya sa compiler atol sa pag-evaluate sa constexpr. Bag-ong mga pasidaan, "-Wmismatched-tags" ug "-Wredundant-tags," ang gidugang.
- Gisugyot ang bag-ong mga opsyon sa command line:
- "-fallation-dce" aron tangtangon ang mga sobra nga pares sa "new" ug "delete" nga mga operator.
- "-fprofile-partial-training" aron dili ma-disable ang size optimizations para sa code nga wala pa nakaagi og training run.
- -fprofile-reproducible aron makontrol ang lebel sa reproducibility sa profile.
- "-fprofile-prefix-path" aron i-define ang base build directory gikan sa source nga gigamit para sa lahi nga profile generation (para sa "-fprofile-generate=profile_dir" ug "-fprofile-use=profile_dir").
- Ang teksto sa pasidaan para sa nahisgutang mga kapilian karon nagpakita og mga hyperlink nga mopadulong sa dokumentasyon para niining mga kapilian. Ang pag-ilis sa URL gikontrolar sa opsyon nga "-fdiagnostics-urls".
- Gidugang ang preprocessor operator "", nga magamit aron masusi ang presensya sa mga built-in nga function.
- Gidugang ang bag-ong built-in nga function nga "__builtin_roundeven" nga adunay implementasyon sa rounding function nga gihubit sa ISO/IEC TS 18661 specification, susama sa "round", apan gi-round up (ngadto sa mas dako nga kantidad) ang bisan unsang bahin nga mas dako sa 0.5, paubos (ngadto sa zero) ang bisan unsang bahin nga mas ubos sa 0.5, ug base sa parity sa penultimate digit ang bisan unsang bahin nga katumbas sa 0.5.
- Para sa arkitektura sa AArch64, gidugang ang suporta para sa SVE2 extension, ug gipauswag ang suporta para sa SVE (Scalable Vector Extension), lakip ang suporta para sa built-in nga mga function ug mga tipo sa SVE ACLE, ug suporta para sa vectorization. Gipalapdan ang suporta para sa LSE (Large System Extensions) ug TME (Transactional Memory Extension). Gidugang ang bag-ong mga instruksyon nga gipaila sa Armv8.5-A ug Armv8.6-A, lakip ang mga instruksyon para sa random number generation, rounding, ug memory tag binding.
bfloat16 ug matrix multiplication. Gidugang ang suporta sa CPU.
Arm Cortex-A77,
Arm Cortex-A76AE,
Arm Cortex-A65,
Arm Cortex-A65AE,
Arm Cortex-A34 ug
Marvell ThunderX3. - Gidugang ang suporta sa FDPIC ABI (64-bit function pointers) para sa ARM32. Gibag-o ug gi-optimize ang pagdumala sa 64-bit integer operations. Gidugang ang suporta sa CPU.
Arm Cortex-A77,
Arm Cortex-A76AE ug
Arm Cortex-M35P. Gipalapdan ang suporta para sa mga instruksyon sa pagproseso sa datos sa ACLE, lakip ang 32-bit SIMD, 16-bit multiplication, min/max arithmetic, ug uban pang mga pag-optimize sa algorithm sa DSP. Gidugang ang eksperimental nga suporta para sa mga instruksyon sa ACLE CDE (Custom Datapath Extension). - Dakong gipauswag ang pagmugna og code ug vectorization sa backend para sa mga AMD GPU base sa GCN microarchitecture.
- Gidugang ang suporta para sa mga device nga sama sa XMEGA para sa arkitektura sa AVR.
ATtiny202, ATtiny204, ATtiny402, ATtiny404, ATtiny406, ATtiny804, ATtiny806, ATtiny807, ATtiny1604, ATtiny1606, ATtiny1607, ATmega808, ATmega809, ATmega1608, ATmega1609 ATmega3208, ATmega3209, ATmega4808 ug ATmega4809. - Usa ka bag-ong Intel instruction set architecture extension, ENQCMD (-menqcmd), ang gidugang para sa IA-32/x86-64 architectures. Gidugang ang suporta para sa Intel Cooperlake (-march=cooperlake, nga nagpagana sa AVX512BF16 ISA extension) ug Tigerlake (-march=tigerlake, nga nagpagana sa MOVDIRI, MOVDIR64B, ug AVX512VP2INTERSECT ISA extensions) CPUs.
- Ang Heterogeneous System Architecture Intermediate Language (HSAIL) nga implementasyon para sa heterogeneous computing systems nga gibase sa HSA architecture wala na gigamit ug lagmit tangtangon na sa umaabot nga release.
Source: opennet.ru
