Dimittis de GCC 11 compilator suite

Post annum evolutionis, emissio gratuiti GCC 11.1 compilator comitiorum dimissa est, prima significativa emissio in novo GCC 11.x ramo. Sub nova emissione numerandi schema, versio 11.0 in evolutione adhibita est, et paulo ante GCC 11.1 emissio, GCC 12.0 ramus iam trisulcus erat, ex quo altera significativa emissio GCC 12.1 formabitur.

GCC 11.1 notabilis est transitus eius ad utens DWARF 5 debug forma lima per defaltam, defaltam inclusionem vexilli C++17 ("-std=gnu++17"), emendationes significantes in auxilio pro C++20 vexillum, subsidium experimentale pro C++ 23, emendationes ad vexillum linguae C futurum (C2x), novae optimizationes perficiendas.

Major changes:

  • Modus defaltus pro lingua C++ commutata est ut vexillum C++17 uti (-std=gnu++17) loco ante oblatum C++14. Potest selective debilitare novos C++17 mores, cum processus templates, qui aliis exemplaribus utuntur modulo (-fno-novo-ttp-matching).
  • Adiecta subsidia ad ferramenta accelerationis instrumenti AddressSanitizer, quod permittit ut facta memoriae accessu liberatae diiudicaris locis, ultra limites quiddam sortitae, et nonnulla alia genera errorum cum memoria laborantes. Acceleratio ferramenti in architectura AArch64 currently tantum praesto est et in usu sumitur cum nucleum Linux componens. Ut AddressSanitizer hardware accelerationis efficiat cum componentibus spatii usoris construendi, vexillum "-fsanitize=hwaddress" additum est, et vexillum nuclei "-fsanitize=kernel-hwaddress".
  • Cum informationes debugging generans, forma Dwarf 5 per defaltam adhibetur, quae, praemissis versionibus comparata, 25% compactorum debugging notitias generare permittit. Plenum subsidium pro DWARF 5 postulat saltem versionis binutillarum 2.35.2. DWARF 5 forma in instrumentis debuggingis adiuvatur cum GDB 8.0, valgrin 3.17.0, elfutilis 0.172 et dwz 0.14. Ad fasciculos debug generare utentibus aliis versionibus Dwarf, optionibus "-gdwarf-2", "-gdwarf-3" et "-gdwarf-4" uti potes.
  • Requisita ad compilatores quae GCC aedificare possunt aucta sunt. Compilator nunc debet vexillum C++11 sustinere (ante C++98 requirebatur), i.e. Si GCC 10 satis erat ad GCC 3.4, saltem GCC 11 ad GCC aedificare opus est.
  • Nomen et locus documentorum ad eri salvificos, ad tempus lima et informationes necessarias pro LTO optimiizationis mutatae sunt. Huiusmodi fasciculi nunc semper servatae sunt in directorio currenti nisi via explicite mutatur per optiones "-dumpbase", "-dumpdir" et "-save-temps=*".
  • Support pro forma binaria BRIG ad usum cum HSAIL (Architectura System Architecturae Intermediati Language) lingua deprecata est et mox sublata est.
  • Facultates ThreadSanitizer modus (-fsanitize=thla) dilatatae sunt, condiciones generis detecturi destinatae sunt, cum eadem notitia ex diversis filis applicationis multi-filae communicantes. Novus emissio subsidium addit pro modo runtimes et ambitus, necnon subsidium KCSAN (Kernel Concurrency Sanitizer) instrumentum debugging, ad condiciones generis in Linux nucleo dynamice detectas. Novas optiones addidit "-param tsan-distingu-volatile" et "param tsan-instrumenti-func-introitus".
  • Numeri columnae in diagnostica nuntia nunc non considerant numerum byte ab initio lineae, sed etiam numeri columnae qui in ratione multi-byte characterum et characterum plurium positionum in linea obtinent (exempli gratia, character duas positiones obtinet et encoded in 4 bytes). Item characteres tab nunc tractantur ut aliquot spatia (configurabilia per optionem -ftabstop, defaltam 8). Ad antiquum mores restituendum, optio "-fdiagnostics-column-unit=byte" proponitur, et valorem initialem (numerandum ex 0 vel 1) - "-fdiagnostics-columnae originis" = "optionem" determinare.
  • Vectoriser omnia functionis contenta in rationem accipit et facultates dispensandas cum intersectionibus et indiciis coniungendas addit ad caudices in graphi ditionis-fluentis (CFG, graphi moderandi-fluentes).
  • Optimizer instrumentum facultatem ad seriem operationum conditionalium convertendi quae eandem variabilem in expressionem transitum comparant. In futurum, expressio switch transcribi potest utentes instructiones (quae "-fbit-tests" ad talem conversionem regendam addita est).
  • Improved optimizations interprocedurales. Novum IPA-modref passum (-fipa-modref) ad indagare effectus latus, cum functiones vocant et accurate analysin emendavit. Melior exsecutio exsecutionis IPA-ICF transeuntis (-fipa-icf), quae memoriam consummationis in compilatione minuit et numerum functionum unitarum auget, quibus identitatis caudices codici inter se componuntur. In IPA-CP (propagatio constantis interpolationis) aucta sunt vaticinia heuristicorum, habita ratione notarum limitum et lineamentorum loramenta.
  • In Linking Time Optimizations (LTO), forma bytecode optimized est ad magnitudinem minuendam et celeritas processus melioris. Tabes in memoriam reducitur apicem Phase ligaturae.
  • In mechanismo Optimizationis innixa ex eventibus Codicis profiling (PGO - Optimizationis Profile-ductus), quod permittit codicem generare meliorem in analysi notarum executionis, magnitudo fasciculorum cum GCOV data reducitur propter densiorem sarcinam nullarum calculorum. . Improved "-fprofile-values" modum servando semitam plurium parametri in obliqua vocat.
  • Exsequens vexillum OpenMP 5.0 (Open Multi-Processing) vexillum, quod definit API ac modos parandi rationes parallelas programmandi in multi-core et hybrid (CPU+GPU/DSP) systemata cum unitatibus communibus memoria et vectorizatione (SIMD), habet continuatur. Addidit subsidium initiale pro directivo collocant et facultas utendi ansulis heterogeneis in constructis OpenMP. Firmamentum impletum pro OMP_TARGET_OFFLOAD ambitus variabilis.
  • Exsecutio OpenACC 2.6 programmatis specificationis parallelae pro C, C++ et Fortranae linguae emendatus est, quae instrumenta definit ad operationes in GPUs et processibus specialioribus offloadendas, sicut NVIDIA PTX.
  • Pro C linguis, novum attributum "no_stack_protector" ad effectum adductum est, destinatum ad functiones signandas pro quibus ACERVUS tutelae dabilis esse non debet ("-fstack-protector"). Proprium "malloc" dilatatum est ad identificatio paria vocatorum ad memoriam deducendam et liberandam (allocator/deallocator), quod in stata analysi static adhibetur ad cognoscendos errores typicos in operando per memoriam (memoriam liberorum, usu liberatis; duplex vocat ad munus liberum, etc.) et in monitis compilator "-Wmismatched-dealloc", "-Wmismatched-novum-delete" et "-Wfree-nonheap-obiectum", informans de repugnantia inter memoriam deallocationis et operationes memoriae destinatio.
  • Novae admonitiones pro C lingua additae sunt:
    • "-Wmismatched-dealloc" (per default para) - monet de operationibus deallocationibus memoriae quae regula utuntur quae functionibus destinatio memoriae non compatitur.
    • "-Wsizeof-array-div" (enabled when "-Wall" specificatur) - Monet de dividendis duobus operariis quantitatis, si divisor magnitudinem elementi ordinatae non aequat.
    • "-Wstringop-overread" (enabled by default) - monet de vocatione chordae functionis quae data ab area extra limitem ordinatam legit.
    • "-Wtsan" (per default para) - Monet de features utendi (ut std::atomic_thread_fence) quae in ThreadSanitizer non praebentur.
    • "-Warray-parameter" et "Wvla-parameter" (enable cum specificando "-Wall") - monet de earundem functionibus cum repugnantibus declarationibus argumentorum fixarum ac variabilium vestium associatarum.
    • Monitio "-Wuninitialized" nunc detegit conatus legere ab inextinctis memoriae dynamice dispositae.
    • Monitum "-Wfree-nonheap-obiectum" dilatat definitionem casuum in quibus functiones deallocationis memoriae vocantur cum regula non obtenta per functiones dynamicas memoriae destinatio.
    • Monitum "-Wmaybe-uninitializatum" detectionem rerum transeuntium monstratores dilatavit ad munera quae ad locorum memoriam inextinctos referunt.
  • Pro lingua C, novarum notarum portio intra vexillum C2X evoluta est (explicando -std=c2x et -std=gnu2x): macros BOOL_MAX et BOOL_WIDTH, indicatio libitum nominum parametri insueta in functione definitiones (ut in C, attributum est "[[nodiscard]]], praecessoris operantis "has_c_attribute", macros FLT_IS_IEC_60559, DBL_IS_IEC_60559, LDBL_IS_IEC_60559, __STDC_WANT_IEC_60559_EXT_, INFINITAS, NAN, FLT. N, NaN = tortor for FloatN, _FloatNx et _DecimalN, facultatem dant ante declarationes notas saliendi specificandi et in fine constitutionum compositorum.
  • Pro C++, portio mutationum et innovationum in vexillo C++ propositarum adimpleta est, additis virtualibus functionibus "consteval virtualis", pseudo-destructoribus ad finem obiecti cycli vitae, usum enum classis et calculandum amplitudinem ordinatae in "novo" locutione.
  • Nam C++, experimentale subsidium additum est pro incrementis quibusdam incrementis pro futuro C++23 signo (-std=c++23, -std=gnu++23, -std=c++2b, -std=gnu. ++2b). Exempli gratia, nunc suppeditat suffixo litterali "zu" pro valores magnitudine_t signatorum.
  • libstdc ++ subsidia emendavit pro vexillo C ++ 17 , incluso in- troductione std :: from_chars et std ::to_chars implementations ad punctum fluitantis genera. Nova elementa vexillum C++20 impleverunt, incluso std::bit_cast, std:: fonte, operationes atomicas exspectant et certiorem faciunt, , , nec non elementa. futurum C ++ vexillum 23 (std ::to_underlying, std ::is_scoped_enum). Typis experimentalis additur subsidium datorum processui parallelarum (SIMD, Typorum Data-Parallel). Exsecutio std::uniformis_int_distributionis accelerata est.
  • Alpha qualitatem vexillum e libgccjit, bibliothecam communicatam ut codicem generantis in alias processus emendare et utens ad componendum JIT compilationem bytecode in codice machinae instituendo. Addidit facultatem libgccjit pro MinGW aedificandi.
  • AArch64 Armv8-R subsidium addidit (-march=armv8-r). AArch64 et ARM architecturae pro processoribus subsidii adiecti sunt (parametri -mcpu et -mtune): Brachium Cortex-A78 (cortex-a78), Brachium Cortex-A78AE (cortex-a78ae), Brachium Cortex-A78C (cortex-a78c) , Brachium Cortex- X1 (cortex-x1), Arm Neoverse V1 (neoverse-v1) et Brachium Neoverse N2 (neoverse-n2). Fujitsu A64FX (a64fx) et Brachium Cortex-R82 (cortex-r82) CPUs additae sunt, solum architecturae AArch64 sustinentes.
  • Addidit subsidium utens Armv8.3-a (AArch64/AArch32), SVE (AArch64), SVE2 (AArch64) et MVE (AArch32 M-profile) SIMD instructiones ad autovectorize operationes faciendos additionis, subtractionis, multiplicationis et variantis additionis/subtractionis super numeris complexis. Addidit initialem subsidium autovectorizationis pro ARM utens MVE instructionem.
  • Ad tabulata ARM, plena copia compilatoris integratorum C functionum (Intrinsicorum) provisa est, substituta per instructiones vectoris extensas (SIMD), omnes instructiones NEON in ACLE Q3 2020 specificationis documentorum.
  • Firmamentum gfx908 GPU ad tergum adscriptum est pro codice generandi AMD GPUs in microarchitecturae GCN fundato.
  • Auxilia additis novis processoribus et novis extensionibus instructionis in eis effectis:
    • Intel Sapphirus Rapids (-march=sapphirerapidas, subsidia praebet MOVDIRI, MOVDIR64B, AVX512VP2 INTERSECT, ENQCMD, CLDEMOTE, Serialize, PTWRITE, WAITPKG, TSXLDTRK, AMT-TILE, AMX-INT8, AMX-BF16 et AVX-instructiones.
    • Intel Alderlake (-march=alderlake subsidia CLDEMOTE, PTWRITE, WAITPKG, Serialize, KEYLOCKER, AVX-VNNI et HRESET instructiones facit).
    • Intel Rocketlake (-march=rocketlake, similis lacus erucae sine SGX auxilio).
    • AMD Zen 3 (-march=znver3).
  • Pro IA-32/x86-64 systemata in processibus Intel fundatis, subsidium pro instructionibus novis TSXLDTRK, Serialize, HRESET, UINTRKEYLOCKER, AMX-TILE, AMX-INT8, AMX-BF16, AVX-VNNI additum est.
  • Adiecta subsidia pro "-march=x86-64-v[234]" vexilla ad gradus architecturae x86-64 eligendos (v2 - operit SSE4.2, SSSE3, POPCNT et CMPXCHG16B extensiones; v3 - AVX2 et MOVBE; v4 - AVX-512 ) .
  • Auxilium systematum RISC-V additum cum ordine byte magno-endiano. Addidit "-misa-spec=*" optionem ad eligendam versionem RISC-V instructionis specificationem architecturam positam. Addidit subsidium AddressSanitizer et acervum tutelae utendi tags canariis.
  • Continuata emendatio "-fanalyzer" analysis statice modus, qui intensivam analysin interproceduralem codicis peragit analysin viarum et notitiarum in progressione fluit. Modus est problematum in scaena compilatione detegendi, sicut duplex vocat ad liberum munus () unius memoriae spatium, lima descriptorem pinum, dereferencendi et transitum nullis indicibus, accessu memoria clausulis liberatis, valores inextinctos utendo, etc. In nova versione:
    • Codex ad vestigandas programmatis status prorsus revocetur. Problemata cum involucro amplissimo C lima solutae sunt.
    • Addidit initialem C++ sustentationem.
    • Memoria destinatio ac deallocatio analysis abstracta est a functionibus specifica malloc ac liberis, nunc nova/deleta et nova []/deleta] sustinet.
    • Monitiones novas addidit: Wanalyzer trabea-numerationem negativam, -Wanalyzer trabeam-comitem superfluam, -Wanalyzer scribe-ad constam et -Wanalyzer scribe-ad-nervam litteralem.
    • Novas optiones debugging addidit -fdump-analyzer-json et -fno-analyzer-facultatem.
    • Facultas analystoris per pluginas pro GCC extendendi ad effectum adducta est (exempli gratia, plugin paratus est ad incommodum usum globalis densis (GIL) in CPython reprimendam).

Source: opennet.ru