Tso tawm ntawm GCC 12 compiler suite

Tom qab ib xyoos ntawm txoj kev loj hlob, lub free compiler suite GCC 12.1 tau raug tso tawm, thawj qhov tseem ceeb tso tawm hauv GCC 12.x tshiab ceg. Raws li cov txheej txheem tshiab tso tawm tus lej, version 12.0 tau siv rau hauv txoj kev txhim kho, thiab tsis ntev ua ntej kev tso tawm ntawm GCC 12.1, GCC 13.0 ceg tau tawg lawm, raws li qhov kev tso tawm loj tom ntej, GCC 13.1, yuav raug tsim. Thaum lub Tsib Hlis 23, qhov project yuav ua kev zoo siab rau 35 xyoo txij li thaum tsim thawj tsab ntawm GCC.

Cov kev hloov loj:

  • Ntxiv kev txhawb nqa rau CTF (Compact Type Format) debugging format, uas muab cov ntaub ntawv khaws cia ntawm C hom, kev sib txuas ntawm cov haujlwm thiab cov cim kev debugging. Thaum muab tso rau hauv ELF cov khoom, hom ntawv tso cai rau siv cov ntawv EFL cim kom tsis txhob muaj cov ntaub ntawv luam tawm.
  • Kev them nyiaj yug rau "STABS" debugging cov ntaub ntawv khaws cia hom, tsim nyob rau hauv 1980s, tau raug deprecated.
  • Kev ua haujlwm txuas ntxiv nthuav dav kev txhawb nqa rau yav tom ntej C2X thiab C ++ 23 tus qauv rau C thiab C ++ hom lus. Piv txwv li, kev txhawb nqa rau "yog tias consteval" qhia tau ntxiv; tso cai siv auto hauv kev sib cav ("f(auto(g()))"); kev siv cov tsis muaj qhov hloov pauv, goto thiab cov ntawv tso cai hauv cov haujlwm tshaj tawm raws li constexpr; ntxiv kev txhawb nqa rau multidimensional index tus neeg teb xov tooj[]; nyob rau hauv yog, rau thiab hloov, lub peev xwm ntawm initialization blocks tau nthuav dav ("rau (siv T = int; T e : v)").
  • C ++ Standard Library tau txhim kho kev txhawb nqa rau qhov kev sim ntawm C ++ 20 thiab C ++ 23 tus qauv. Ntxiv kev txhawb nqa rau std::move_only_function, , std::basic_string::resize_and_overwrite, , thiab std::invoke_r. Tso cai siv std::unique_ptr, std::vector, std::basic_string, std::optional thiab std::variant in constexpr functions.
  • Fortran frontend muab kev txhawb nqa tag nrho rau TS 29113 specification, uas piav qhia txog kev muaj peev xwm los xyuas kom muaj kev txav mus los ntawm Fortran thiab C code.
  • Ntxiv kev txhawb nqa rau __builtin_shufflevector(vec1, vec2, index1, index2, ...) txuas ntxiv yav dhau los ntxiv rau Clang, uas muaj ib qho kev hu rau ua cov vector shuffle thiab shuffle ua haujlwm.
  • Thaum siv "-O2" qib optimization, vectorization yog enabled los ntawm lub neej ntawd (tus -ftree-vectorize thiab -fvect-cost-model = ntau-cheap hom yog enabled). Tus qauv pheej yig heev tso cai rau vectorization nkaus xwb yog tias tus lej vector tuaj yeem hloov tag nrho cov scalar code raug vectorized.
  • Ntxiv "-ftrivial-auto-var-init" hom los pab kom paub meej qhov pib ntawm qhov sib txawv ntawm pawg txhawm rau taug qab cov teeb meem thiab thaiv qhov tsis zoo cuam tshuam nrog kev siv cov hloov pauv tsis tsim nyog.
  • Rau cov lus C thiab C ++, ib qho kev ua haujlwm __builtin_dynamic_object_size tau ntxiv los txiav txim qhov loj ntawm ib qho khoom, sib xws nrog cov haujlwm zoo sib xws los ntawm Clang.
  • Rau cov lus C thiab C ++, kev txhawb nqa rau "tsis muaj" tus cwj pwm tau ntxiv (piv txwv li, koj tuaj yeem khij lub luag haujlwm uas yuav tsim qhov yuam kev yog tias koj sim siv lawv).
  • Rau cov lus C thiab C ++, kev txhawb nqa rau cov lus qhia ua ntej "#elifdef" thiab "#elifndef" tau ntxiv.
  • Ntxiv "-Wbidi-chars" chij los tso saib cov lus ceeb toom yog UTF-8 cov cim siv tsis raug, hloov qhov kev txiav txim uas cov ntawv nyeem bidirectional tso tawm.
  • Ntxiv "-Warray-piv" chij los tso saib cov lus ceeb toom thaum sim sib piv ob qhov kev ua haujlwm uas hais txog arrays.
  • Kev siv ntawm OpenMP 5.0 thiab 5.1 (Open Multi-Processing) cov qauv, uas txhais cov API thiab cov txheej txheem rau kev siv cov txheej txheem sib luag ntawm ntau cov tub ntxhais thiab hybrid (CPU + GPU / DSP) cov tshuab nrog kev nco thiab vectorization units (SIMD) , tau txuas ntxiv mus.
  • Kev txhim kho kev siv ntawm OpenACC 2.6 parallel programming specifications, uas txhais cov cuab yeej rau offloading hauj lwm ntawm GPUs thiab tshwj xeeb processors xws li NVIDIA PTX.
  • Kev them nyiaj yug rau cov lus qhia txuas ntxiv Intel AVX86-FP512 thiab hom _Float16 tau ntxiv rau cov lej cim rov qab rau x16 architecture.
  • Rau x86 architecture, kev tiv thaiv tau ntxiv tawm tsam qhov tsis zoo hauv cov txheej txheem los ntawm kev ua tiav ntawm cov lus qhia tom qab tsis muaj kev cuam tshuam rau pem hauv ntej dhia haujlwm. Qhov teeb meem tshwm sim vim ua ntej emptive cov lus qhia tam sim tom qab cov lus qhia ntawm ceg hauv kev nco (SLS, Straight Line Speculation). Txhawm rau ua kom muaj kev tiv thaiv, qhov "-mharden-sls" kev xaiv tau thov.
  • Ntxiv kev tshawb pom ntawm kev siv cov uninitialized variables rau kev sim static analyzer. Ntxiv kev txhawb nqa thawj zaug rau kev txheeb xyuas cov lej sib dhos hauv inline inserts. Txhim kho nco taug qab. Txoj cai rau kev hloov cov kab lus tau raug sau dua tshiab.
  • Ntxiv 30 tshiab hu rau libgccjit, ib lub tsev qiv ntawv sib koom rau embedding code generator rau hauv lwm cov txheej txheem thiab siv nws rau JIT compile bytecode rau hauv tshuab code.
  • Kev them nyiaj yug rau CO-RE (Compile Ib zaug - Khiav Txhua Qhov Chaw) tau ntxiv rau qhov backend rau tsim BPF bytecode, uas tso cai rau koj los sau cov cai ntawm eBPF cov kev pab cuam rau Linux ntsiav ib zaug thiab siv qhov tshwj xeeb universal loader uas yoog rau loaded program rau cov ntsiav tam sim no thiab BPF Hom Hom). CO-RE daws qhov teeb meem ntawm kev txav mus los ntawm kev sau ua ke ntawm eBPF cov kev pab cuam, uas yav dhau los tsuas yog siv tau rau hauv lub version ntawm cov ntsiav uas lawv tau muab tso ua ke, txij li txoj haujlwm ntawm cov ntsiab lus hauv cov ntaub ntawv hloov pauv ntawm version mus rau version.
  • RISC-V backend ntxiv kev txhawb nqa rau cov kev qhia tshiab teeb tsa architecture txuas ntxiv zba, zbb, zbc thiab zbs, nrog rau ISA txuas ntxiv rau vector thiab scalar cryptographic ua haujlwm. Los ntawm lub neej ntawd, kev txhawb nqa rau RISC-V ISA 20191213 specification yog muab. Lub -mtune = thead-c906 chij tau ntxiv los pab kom ua tau zoo rau T-HEAD c906 cores.
  • Kev them nyiaj yug rau __int128_t/integer(kind=16) hom tau ntxiv rau cov lej cim rov qab rau AMD GPUs raws li GCN microarchitecture. Nws muaj peev xwm siv tau txog li 40 pawg ua haujlwm hauv ib chav tsev (CU) thiab txog li 16 qhov kev qhia pem hauv ntej (wavefront, ib pawg ntawm cov xov uas raug tua ua ke los ntawm SIMD Cav) rau ib pawg. Yav dhau los, tsuas yog ib qho kev qhia ntug ntawm CU tau tso cai.
  • NVPTX backend, tsim los tsim cov cai siv NVIDIA PTX (Parallel Thread Execution) cov lus qhia teeb tsa, tau ntxiv lub peev xwm los siv cov "-march", "-mptx" thiab "-march-map" chij. Kev txhawb nqa rau PTX ISA sm_53, sm_70, sm_75 thiab sm_80. Lub neej ntawd architecture yog sm_30.
  • Kev nqis tes ua ntawm cov haujlwm ua haujlwm tau raug sau dua tshiab hauv backend rau PowerPC / PowerPC64 / RS6000 processors. The built-in functions __builtin_get_texasr, __builtin_get_texasru, __builtin_get_tfhar, __builtin_get_tfiar, __builtin_set_texasr, __builtin_set_texasru, __builtin_set_set_sett.
  • Kev them nyiaj yug rau Arm Ampere-64 (-mcpu /-mtune ampere1), Arm Cortex-A1 (cortex-a510), Arm Cortex-A510 (cortex-a710) thiab Arm Cortex-X710 (cortex- x2). Ntxiv kev txhawb nqa rau kev xaiv ARMv2 tshiab rau kev siv nrog "-march" kev xaiv: armv8-a, armv8.7-a, armv8.8-a. Ntxiv kev siv C ua haujlwm ua rau hauv lub compiler (Intrinsics) rau atomic loading thiab txuag cov ntaub ntawv rau hauv lub cim xeeb, raws li kev siv cov lus qhia txuas ntxiv ARM (ls9). Ntxiv kev txhawb nqa rau kev nrawm memcpy, memmove thiab memset ua haujlwm siv mopsoption ARM txuas ntxiv.
  • Ntxiv cov kev kuaj xyuas tshiab "-fsanitize = duab ntxoov ntxoo-hu-stack" (ShadowCallStack), uas tam sim no tsuas yog muaj rau AArch64 architecture thiab ua haujlwm thaum lub tsev cai nrog "-ffixed-r18" kev xaiv. Lub hom muab kev tiv thaiv tiv thaiv overwriting qhov chaw nyob xa rov qab los ntawm kev ua haujlwm thaum muaj kev tsis txaus ntawm cov pawg. Lub ntsiab lus ntawm kev tiv thaiv yog kom txuag tau qhov chaw nyob xa rov qab rau hauv ib qho "duab ntxoov ntxoo" cais tom qab hloov kev tswj mus rau qhov muaj nuj nqi thiab rov qab qhov chaw nyob no ua ntej tawm ntawm txoj haujlwm.

Tau qhov twg los: opennet.ru

Ntxiv ib saib