Ho lokolloa ha LLVM 15.0 compiler suite

Kamora likhoeli tse ts'eletseng tsa nts'etsopele, ho hlahisoa tokollo ea projeke ea LLVM 15.0 - sesebelisoa sa lisebelisoa se lumellanang le GCC (li-compilers, optimizers le lijenereithara tsa khoutu) tse bokellang mananeo ka har'a bitcode ea lipakeng tsa RISC-joaloka litaelo tse hlakileng (mochini oa boemo bo tlase o nang le mokhoa oa ho ntlafatsa maemo a mangata). Khoutu ea pseudo e hlahisitsoeng e ka fetoloa ke moqapi oa JIT hore e be litaelo tsa mochini hantle ka nako ea ts'ebetso ea lenaneo.

Lintlafatso tse kholo ho Clang 15.0:

  • Bakeng sa litsamaiso tse ipapisitseng le meralo ea x86, folakha ea "-fzero-call-used-regs" e kentsoe, e netefatsang hore lirekoto tsohle tsa CPU tse sebelisitsoeng ts'ebetsong li khutlisetsoa ho zero pele li khutlisa taolo ho tsoa ts'ebetsong. Khetho ena e u lumella ho itšireletsa khahlanong le ho tsoa ha tlhahisoleseling ho tsoa mesebetsing le ho fokotsa palo ea li-blocks tse loketseng ho aha lisebelisoa tsa ROP (Return-Oriented Programming) ts'ebetsong ka hoo e ka bang 20%.
  • Ho se ho kentsoe ts'ebetsong ka mokhoa o sa reroang oa ho beoa ha memori ea meaho bakeng sa C khoutu, e leng se thatafatsang ho ntšoa ha data ho tsoa ho meaho ha ho ka sebelisoa ts'ebeliso ea bofokoli. Randomization e buloa le ho tima ho sebelisoa libopeho tsa randomize_layout le no_randomize_layout, 'me e hloka ho beha peo ho sebelisoa "-frandomize-layout-seed" kapa "-frandomize-layout-seed-file" folakha.
  • E kentsoe "-fstrict-flex-arrays=" folakha ", eo ka eona u ka laolang meeli bakeng sa karolo e feto-fetohang ka har'a meaho (Flexible Array Members, letoto la boholo bo sa lekanyetsoang qetellong ea sebopeho). Ha e behiloe ho 0 (default), karolo ea ho qetela ea sebopeho se nang le lihlopha e lula e sebetsoa e le lihlopha tse feto-fetohang, 1 - boholo feela [], [0] le [1] bo sebetsoa e le sehlopha se feto-fetohang, 2 - boholo feela. [] le [0] li sebetsoa joalo ka sehlopha se tenyetsehang.
  • E kentse tšehetso ea liteko bakeng sa puo e kang C-HLSL (Puo ea Shader e Phahameng), e sebelisoang ho DirectX bakeng sa ho ngola li-shader.
  • E kentse "-Warray-parameter" ho hlokomelisa ka mesebetsi e ka holimo-limo e nang le liphatlalatso tse sa lumellaneng tse amanang le li-array tse tsitsitseng le tse fapaneng.
  • Tšebelisano e ntlafalitsoeng le MSVC. Tšehetso e ekelitsoeng bakeng sa "#pragma function" (e laela moqapi ho hlahisa mohala oa ts'ebetso sebakeng sa katoloso ea inline) le "#pragma alloc_text" (e hlalosa lebitso la karolo e nang le khoutu ea ts'ebetso) e fanoeng ho MSVC. Ts'ehetso e ekelitsoeng bakeng sa lifolakha tsa MSVC tse lumellanang / JMC le / JMC.
  • Mosebetsi o ntse o tsoela pele ho tšehetsa maemo a tlang a C2X le C++23. Bakeng sa puo ea C, tse latelang li kengoa tšebetsong: tšobotsi ea noreturn, mantsoe a sehlooho bohata le 'nete, mofuta oa _BitInt(N) bakeng sa lipalo tse felletseng tsa botebo bo fanoeng, *_WIDTH macros, prefix ea u8 bakeng sa litlhaku tse kentsoeng tsa UTF-8.

    Bakeng sa C++, tse latelang li kengoa ts'ebetsong: ho kopanya mojule, ho aroloa ha ABI ha litho tsa ts'ebetso, ho laetse ho qala ka matla ha mefuta e sa tloaelehang ea li-module, multidimensional index operators, auto(x), mefuta e sa tloaelehang, goto le labels mesebetsing e phatlalalitsoeng e le constexpr. , tatelano e lekanyelitsoeng ea ho phonyoha, mabitso a batho ba balehang.

  • Bokhoni bo amanang le tšehetso ea OpenCL le OpenMP bo atolositsoe. Tšehetso e ekelitsoeng bakeng sa katoloso ea OpenCL cl_khr_subgroup_rotate.
  • 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 "-mharden-sls=[none|all|return|indirect-jmp]" e hlahisitsoe.
  • Bakeng sa li-platform tse tšehetsang katoloso ea SSE2, mofuta oa _Float16 o kentsoe, o etsisoang ho sebelisoa mofuta oa float tabeng ea ho hloka tšehetso bakeng sa litaelo tsa AVX512-FP16.
  • E kentse folakha ea "-m[no-]rdpru" ho laola tšebeliso ea litaelo tsa RDPRU, e tšehetsoeng ho qala ka li-processor tsa AMD Zen2.
  • E kentse folakha ea "-function-return=thunk-extern" ho sireletsa khahlanong le ts'oaetso ea RETBLEED, e sebetsang ka ho kenyelletsa tatelano ea litaelo tse sa kenyelletseng ho kenya letsoho ha mokhoa o inahaneloang oa ts'ebetso bakeng sa makala a sa tobang.

Litlhahiso tsa bohlokoa ho LLVM 15.0:

  • Tšehetso e ekelitsoeng bakeng sa meralo ea Cortex-M85 CPU, Armv9-A, Armv9.1-A le Armv9.2-A, Armv8.1-M PACBTI-M e atolositsoeng.
  • Ho kenyellelitsoe morao-rao oa liteko oa DirectX o tšehetsang sebopeho sa DXIL (DirectX Intermediate Language) se sebelisetsoang li-shader tsa DirectX. Backend e nolofalitsoe ka ho totobatsa "-DLLVM_EXPERIMENTAL_TARGETS_TO_BUILD=DirectX" parameter nakong ea kopano.
  • Libc++ e ntse e tsoela pele ho kenya tšebetsong likarolo tse ncha tsa litekanyetso tsa C++20 le C+++2b, ho kenyeletsoa ho phethoa ha ts'ebetsong ea laebrari ea "format" le mofuta oa liteko o reriloeng oa laeborari ea "ranges".
  • Li-backend tse ntlafalitsoeng bakeng sa meralo ea x86, PowerPC le RISC-V.
  • Bokhoni ba sehokelo sa LLD le LLDB debugger bo matlafalitsoe.

Source: opennet.ru

Eketsa ka tlhaloso