Ho lokolloa ha LLVM 13.0 compiler suite

Kamora likhoeli tse ts'eletseng tsa nts'etsopele, ho hlahisoa tokollo ea projeke ea LLVM 13.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 ho Clang 13.0:

  • Ts'ehetso e kentsoeng bakeng sa mehala e netefalitsoeng (ho letsetsa subroutine qetellong ea ts'ebetso, ho etsa phetoho ea mohatla haeba subroutine e ipitsa). Tšehetso bakeng sa mehala e netefalitsoeng e fanoa ke "[[clang::musttail]]" tšobotsi ho C++ le "__attribute__((musttail))" ho C, e sebelisitsoeng polelong ea "khutlisa". Karolo e u lumella ho kenya ts'ebetsong lintlafatso ka ho kenya khoutu ka mokhoa o bataletseng ho boloka tšebeliso ea stack.
  • "sebelisa" liphatlalatso le litlatsetso tsa clang li fana ka tšehetso bakeng sa ho hlalosa litšobotsi tsa mofuta oa C++11 ho sebelisoa sebopeho sa "[[]]".
  • E kentse folakha ea "-Wreserved-identifier" ho hlahisa temoso ha o hlakisa li-identifiers tse behelletsoeng khoutung ea mosebelisi.
  • E kentsoe "-Wunused-but-set-parameter" le "-Wunused-but-set-variable" lifolakha ho hlahisa temoso haeba paramethara kapa phetoho e behiloe empa e sa sebelisoe.
  • E kentse "-Wnull-pointer-subtraction" folakha ho fana ka temoso haeba khoutu e ka hlahisa boitšoaro bo sa hlalosoang ka lebaka la tšebeliso ea null pointer mesebetsing ea ho tlosa.
  • E kentse folakha ea "-fstack-usage" ho hlahisa faele e 'ngoe le e 'ngoe ea khoutu faele ea ".su" e nang le tlhahisoleseding e mabapi le boholo ba liforeimi tsa stack bakeng sa mosebetsi o mong le o mong o hlalositsoeng faeleng e ntseng e sebetsoa.
  • Mofuta o mocha oa tlhahiso o kentsoe ho static analyzer - "sarif-html", e lebisang tlhahisong ea litlaleho ka nako e le 'ngoe ka liforomo tsa HTML le Sarif. E kentse cheke e ncha ea allocClassWithName. Ha u hlakisa khetho ea "-analyzer-display-progress", nako ea tlhahlobo ea ts'ebetso ka 'ngoe e bonts'oa. Smart pointer analyzer (alpha.cplusplus.SmartPtr) e se e batla e lokile.
  • Bokhoni bo amanang le tšehetso ea OpenCL bo ekelitsoe. Ts'ehetso e ekelitsoeng bakeng sa likeketso tse ncha cl_khr_integer_dot_product, cl_khr_extended_bit_ops, __cl_clang_bitfields le __cl_clang_non_portable_kernel_param_types. Ts'ebetsong ea litlhaloso tsa OpenCL 3.0 e tsoetse pele. Bakeng sa C, litlhaloso tsa OpenCL 1.2 li sebelisoa ka mokhoa oa kamehla ntle le haeba ho khethiloe mofuta o mong ka ho hlaka. Bakeng sa C ++, tšehetso ea lifaele tse nang le ".clcpp" e kenyelelitsoe.
  • Ts'ehetso bakeng sa litaelo tsa phetoho ea loop ("#pragma omp unrol" le "#pragma omp tile") e hlalositsoeng ho litlhaloso tsa OpenMP 5.1 e kentsoe tšebetsong.
  • Likhetho tse ekelitsoeng ho utility ea clang-format: SpacesInLineCommentPrefix ho hlalosa palo ea libaka pele ho maikutlo, IndentAccessModifiers, LambdaBodyIndentation le PPIndentWidth ho laola tekano ea likenyo, mantsoe a lambda le litaelo tsa preprocessor. Menyetla ea ho hlophisa palo ea lifaele tsa lihlooho (SortIncludes) e atolositsoe. Tšehetso e ekelitsoeng bakeng sa ho fometa lifaele tsa JSON.
  • Karolo e kholo ea licheke tse ncha li kentsoe ho linter clang-tidy.

Litlhahiso tsa bohlokoa ho LLVM 13.0:

  • E kentse khetho ea "-ehcontguard" ho sebelisa theknoloji ea CET (Windows Control-flow Enforcement Technology) ho sireletsa khahlanong le ts'ebetsong ea mesebetsi e hahiloeng ho sebelisoa mekhoa ea Return-Oriented Programming (ROP) sethaleng sa ho sebetsana le mokhelo.
  • Morero oa debuginfo-test o rehiloe lebitso la "cross-project-test" mme o etselitsoe ho leka likarolo tsa merero e fapaneng, ha e felle feela tabeng ea ho lokisa liphoso.
  • Sistimi ea kopano e fana ka ts'ehetso bakeng sa ho aha likabo tse 'maloa, mohlala, e' ngoe e na le lisebelisoa, 'me e' ngoe e na le lilaebrari bakeng sa bahlahisi.
  • Ka morao bakeng sa meralo ea AArch64, tšehetso ea Armv9-A RME (Realm Management Extension) le SME (Scalable Matrix Extension) e kenngoa ts'ebetsong ho sekopanyi.
  • Ts'ehetso bakeng sa ISA V68/HVX e kentsoe ka morao bakeng sa meaho ea Hexagon.
  • The x86 backend e ntlafalitse tšehetso bakeng sa li-processor tsa AMD Zen 3.
  • Tšehetso e ekelitsoeng bakeng sa GFX1013 RDNA2 APU ho ea morao-rao ea AMDGPU.
  • Libc ++ e tsoela pele ho kenya tšebetsong likarolo tse ncha tsa litekanyetso tsa C++20 le C+++2b, ho kenyeletsoa ho phethoa ha laebrari ea “likhopolo”. Ts'ehetso e ekelitsoeng bakeng sa std::filesystem bakeng sa sethala sa Windows se thehiloeng ho MinGW. Lifaele tsa hlooho li arohane , Le . Khetho ea ho aha LIBCXX_ENABLE_INCOMPLETE_FEATURES e kenyellelitsoe ho tima lifaele tsa lihlooho tse sa sebetseng ka botlalo.
  • Bokhoni ba sehokelo sa LLD bo atolositsoe, moo ts'ehetso ea li-processor tsa Big-endian Aarch64 e kengoang ts'ebetsong, mme backend ea Mach-O e tlisitsoe naheng e lumellang ho hokahanya mananeo a tloaelehileng. E kenyelelitsoe lintlafatso tse hlokahalang ho hokahanya Glibc ho sebelisa LLD.
  • Sesebelisoa sa llvm-mca (Mochine Code Analyzer) se ekelitse tšehetso bakeng sa li-processor tse phethisang litaelo ka tatellano (peipi ea superscalar ka tatellano), joalo ka ARM Cortex-A55.
  • LLDB debugger bakeng sa sethala sa AArch64 e fana ka ts'ehetso e felletseng bakeng sa netefatso ea Pointer, MTE (MemTag, Memory Tagging Extension) le lirejistara tsa SVE. Litaelo tse ekelitsoeng tse u lumellang ho tlama li-tag ts'ebetsong e 'ngoe le e' ngoe ea kabo ea memori le ho hlophisa cheke ea pointer ha u fihlella memori, e tlamehang ho amahanngoa le tag e nepahetseng.
  • LLDB debugger le frontend ea puo ea Fortran - Flang li kenyelelitsoe likopanong tsa binary tse hlahisoang ke morero.

Source: opennet.ru

Eketsa ka tlhaloso