Ho lokolloa ha GCC 12 compiler suite

Kamora selemo sa nts'etsopele, setsi sa mahala sa compiler sa GCC 12.1 se lokollotsoe, tokollo ea pele ea bohlokoa lekaleng le lecha la GCC 12.x. Ho ea ka leano le lecha la linomoro tsa tokollo, mofuta oa 12.0 o ile oa sebelisoa ts'ebetsong ea nts'etsopele, mme nakoana pele ho lokolloa ha GCC 12.1, lekala la GCC 13.0 le ne le se le theohile, motheong oa hore tokollo e kholo e latelang, GCC 13.1, e ne e tla. thehoa. Ka la 23 Motšeanong, morero ona o tla keteka lilemo tse 35 haesale ho thehoa khatiso ea pele ea GCC.

Liphetoho tse kholo:

  • Tšehetso e ekelitsoeng bakeng sa mokhoa oa ho lokisa oa CTF (Compact Type Format), o fanang ka polokelo e kopanetsoeng ea tlhahisoleseding e mabapi le mefuta ea C, likhokahano pakeng tsa mesebetsi le matšoao a ho lokisa liphoso. Ha e kentsoe linthong tsa ELF, sebopeho se lumella tšebeliso ea litafole tsa litlhaku tsa EFL ho qoba phetiso ea data.
  • Ts'ehetso bakeng sa "STABS" ea mokhoa oa ho boloka tlhahisoleseling, e entsoeng ka bo-1980, e tlositsoe.
  • Mosebetsi o ntse o tsoela pele ho holisa tšehetso bakeng sa maemo a tlang a C2X le C++23 bakeng sa lipuo tsa C le C++. Ka mohlala, ho kentsoe tšehetso ea poleloana e reng “haeba consteval”; lumelloa ho sebelisa auto likhang tsa tšebetso (“f(auto(g()))”); tšebeliso ea mefuta-futa e sa tloaelehang, goto le labels e lumelloa mesebetsing e phatlalalitsoeng e le constexpr; tšehetso e eketsehileng bakeng sa opereishene ea li-multidimensional index[]; haeba, bakeng sa le ho fetola, bokhoni ba li-block tsa ho qala bo atolositsoe ("bakeng sa (ho sebelisa T = int; T e: v)").
  • C++ Standard Library e ntlafalitse tšehetso bakeng sa likarolo tsa liteko tsa litekanyetso tsa C++20 le C+++23. Tšehetso e ekelitsoeng bakeng sa std::move_only_function, , std::basic_string::resize_and_overwrite, , le std::invoke_r. E lumelletsoe ho sebelisa std::unique_ptr, std::vector, std::basic_string, std::optional le std::phapang mesebetsing ea constexpr.
  • Sebaka sa pele sa Fortran se fana ka ts'ehetso e felletseng bakeng sa litlhaloso tsa TS 29113, tse hlalosang bokhoni ba ho netefatsa hore ho na le ts'ebetso lipakeng tsa khoutu ea Fortran le C.
  • Ts'ehetso e ekelitsoeng bakeng sa __builtin_shufflevector(vec1, vec2, index1, index2, ...) e kenyellelitsoeng pele ho Clang, e fanang ka mohala o le mong ho etsa ts'ebetso e tloaelehileng ea vector shuffle le shuffle.
  • Ha o sebelisa "-O2" boemo ba ho ntlafatsa, vectorization e lumelloa ka mokhoa oa kamehla (the -ftree-vectorize le -fvect-cost-model=mekhoa e theko e tlaase haholo e lumelloa). Mohlala o theko e tlaase haholo o lumella vectorization feela haeba khoutu ea vector e ka nka sebaka sa khoutu ea scalar e ntseng e etsoa ka botlalo.
  • E kenyellelitsoe "-ftrivial-auto-var-init" mokhoa oa ho nolofalletsa ho qala ka ho hlaka ha lintho tse fapaneng ho stack ho latela litaba le ho thibela bofokoli bo amanang le ts'ebeliso ea mefuta e sa tsejoeng.
  • Bakeng sa lipuo tsa C le C ++, ho kentsoe tšebetso e hahelletsoeng __builtin_dynamic_object_size ho fumana boholo ba ntho, e tsamaellanang le mosebetsi o tšoanang le oa Clang.
  • Bakeng sa lipuo tsa C le C ++, tšehetso bakeng sa tšobotsi ea "ha e fumanehe" e kentsoe (mohlala, u ka tšoaea mesebetsi e tla hlahisa phoso haeba u leka ho e sebelisa).
  • Bakeng sa lipuo tsa C le C++, ho kentsoe tšehetso bakeng sa litaelo tsa pele "#elifdef" le "#elifndef" e kentsoe.
  • E kentse "-Wbidi-chars" folakha ho bontša temoso haeba litlhaku tsa UTF-8 li sebelisoa hampe, ho fetola tatellano eo mongolo oa mahlakore a mabeli a hlahang ka oona.
  • E kentse folakha ea "-Warray-compare" ho hlahisa temoso ha u leka ho bapisa li-operands tse peli tse buang ka lihlopha.
  • Ho kengoa ts'ebetsong ha maemo a OpenMP 5.0 le 5.1 (Open Multi-Processing), e hlalosang API le mekhoa ea ho sebelisa mekhoa ea mananeo a tšoanang ho litsamaiso tsa li-multi-core le hybrid (CPU+GPU/DSP) tse nang le memori e arolelanoang le likarolo tsa vectorization (SIMD) , e tsoetse pele.
  • Ntlafatso ea ts'ebetso ea OpenACC 2.6 parallel programming specification, e hlalosang lisebelisoa tsa ho theola ts'ebetso ho li-GPU le li-processor tse khethehileng tse kang NVIDIA PTX.
  • Ts'ehetso bakeng sa litaelo tse atolositsoeng Intel AVX86-FP512 le mofuta oa _Float16 li kentsoe mokokotlong oa tlhahiso ea khoutu bakeng sa meralo ea x16.
  • Bakeng sa meralo ea x86, ts'ireletso e ekelitsoe khahlano le bofokoli ho li-processor tse bakoang ke ts'ebetso e inahaneloang ea litaelo kamora ts'ebetso e sa hlokahaleng ea ho tlola pele. Bothata bo hlaha ka lebaka la ts'ebetso ea pele ho ts'ebetso ea litaelo hang ka mor'a taelo ea lekala mohopolong (SLS, Straight Line Speculation). Ho nolofalletsa ts'ireletso, khetho ea "-mharden-sls" e hlahisoa.
  • Tlhahlobo e ekelitsoeng ea ts'ebeliso ea mefuta e sa tsejoeng ho static analyzer ea liteko. E kenyellelitse ts'ehetso ea pele bakeng sa ho sekaseka khoutu ea kopano ka li-inline inline. Ho latela memori e ntlafalitsoeng. Khoutu ea ho sebetsana le mantsoe a switjha e ngotsoe bocha.
  • E kentse mehala e mecha e 30 ho libgccjit, laeborari e arolelanoang bakeng sa ho kenya jenereithara ea khoutu lits'ebetsong tse ling le ho e sebelisa ho JIT ho bokella bytecode ka khoutu ea mochini.
  • Ts'ehetso ea mochini oa CO-RE (Compile Once - Run Everywhere) e kenyellelitsoe mokokotlong oa ho hlahisa BPF bytecode, e u lumellang ho bokella khoutu ea mananeo a eBPF bakeng sa kernel ea Linux hanngoe feela 'me u sebelise mochine o khethehileng oa bokahohle o fetolang Lenaneo le laelitsoeng ho kernel ea hajoale le Format ea Mefuta ea BPF). CO-RE e rarolla bothata ba ho nkeha ha mananeo a eBPF a hlophisitsoeng, ao pele a neng a ka sebelisoa feela phetolelong ea kernel eo a neng a e bokelletse, kaha boemo ba likarolo tsa sebopeho sa data bo fetoha ho tloha ho mofuta ho ea ho mofuta.
  • RISC-V backend e eketsa tšehetso bakeng sa lisebelisoa tse ncha tsa meralo ea zba, zbb, zbc le zbs, hammoho le lisebelisoa tsa ISA bakeng sa ts'ebetso ea vector le scalar cryptographic. Ka ho sa feleng, ho fanoe ka ts'ehetso bakeng sa litlhaloso tsa RISC-V ISA 20191213. Folakha ea -mtune=thead-c906 e kentsoe ho nolofalletsa ho ntlafatsa li-cores tsa T-HEAD c906.
  • Ts'ehetso bakeng sa mofuta oa __int128_t/integer(kind=16) e kentsoe molemong oa morao-rao oa tlhahiso ea khoutu bakeng sa li-AMD GPU tse ipapisitseng le meralo e menyenyane ea GCN. Hoa khoneha ho sebelisa lihlopha tsa mosebetsi tse ka bang 40 ka yuniti e le 'ngoe ea komporo (CU) le likarolo tse fihlang ho tse 16 tsa litaelo (wavefront, sete ea likhoele tse phethiloeng ka ho bapana ke Enjene ea SIMD) ka sehlopha. Pejana, ho ne ho lumelloa moeli o le mong feela oa litaelo ho CU.
  • The backend NVPTX, e etselitsoeng ho hlahisa khoutu e sebelisang meralo ea NVIDIA PTX (Parallel Thread Execution), e ekelitse bokhoni ba ho sebelisa lifolakha tsa "-march", "-mptx" le "-march-map". Ts'ehetso e kentsoeng ea PTX ISA sm_53, sm_70, sm_75 le sm_80. Mehaho ea kamehla ke sm_30.
  • Ka morao bakeng sa li-processor tsa PowerPC / PowerPC64 / RS6000, ts'ebetsong ea mesebetsi e hahelletsoeng e ngotsoe bocha. Mesebetsi e hahelletsoeng ka hare __builtin_get_texasr, __builtin_get_texasru, __builtin_get_tfhar, __builtin_get_tfiar, __builtin_set_texasr, __builtin_set_texasru, __builtin_get_tfhar, __builtin_get_tfiar, __builtin_set_texasr, __builtin_set_texasru, __builtin_builtin_set_set_set_set.
  • Tšehetso bakeng sa Arm Ampere-64 (-mcpu/-mtune ampere1), Arm Cortex-A1 (cortex-a510), Arm Cortex-A510 (cortex-a710) le Arm Cortex-X710 (cortex- x2). Ts'ehetso e ekelitsoeng bakeng sa likhetho tse ncha tsa meralo ea ARMv2 bakeng sa tšebeliso le khetho ea "-march": armv8-a, armv8.7-a, armv8.8-a. Ts'ebetsong e ekelitsoeng ea mesebetsi ea C e hahiloeng ka har'a komporo (Intrinsics) bakeng sa ho kenya athomo le ho boloka data mohopolong, ho ipapisitse le ts'ebeliso ea litaelo tse atolositsoeng tsa ARM (ls9). Tšehetso e ekelitsoeng bakeng sa ho potlakisa mesebetsi ea memcpy, memmove le memset ho sebelisa katoloso ea ARM ea mopsoption.
  • E kentse mokhoa o mocha oa ho hlahloba "-fsanitize=shadow-call-stack" (ShadowCallStack), e fumanehang feela bakeng sa meralo ea AArch64 mme e sebetsa ha ho aha khoutu ka khetho ea "-ffixed-r18". Mokhoa ona o fana ka ts'ireletso khahlano le ho hlakola aterese ea ho khutlisa ho tsoa ts'ebetsong ha ho ka ba le buffer e ngata ho stack. Ntho ea bohlokoa ea tšireletso ke ho boloka aterese ea ho khutlisa ka har'a "moriti" o arohaneng ka mor'a ho fetisetsa taolo mosebetsing le ho fumana aterese ena pele o tsoa mosebetsing.

Source: opennet.ru

Eketsa ka tlhaloso