Mwepụta nke LLVM 13.0 compiler suite

Mgbe ọnwa isii nke mmepe gasịrị, ewepụtara ntọhapụ nke ọrụ LLVM 13.0 - ngwa ọrụ GCC dakọtara (ndị na-achịkọta, ndị na-emepe emepe na ndị na-emepụta koodu) na-achịkọta mmemme n'ime bitcode etiti nke RISC-dị ka ntuziaka mebere (igwe mebere dị ala nke nwere obere igwe). usoro njikarịcha ọkwa dị iche iche). Enwere ike ịtụgharị pseudocode emepụtara site na iji mkpokọta JIT ka ọ bụrụ ntuziaka igwe ozugbo n'oge mmebe mmemme.

Mmelite na Clang 13.0:

  • Nkwado etinyere maka oku ọdụ na-ekwe nkwa (na-akpọ subroutine na njedebe nke ọrụ, na-eme nlọghachi ọdụ ma ọ bụrụ na subroutine na-akpọ onwe ya). A na-enye nkwado maka oku ọdụ na-ekwe nkwa site na njirimara "[[clang :: musttail]]" dị na C++ yana "__attribute__((musttail))" na C, ejiri na nkwupụta "nlaghachi". Njirimara a na-enye gị ohere imejuputa njikarịcha site na itinye koodu n'ime ihe dị larịị iji chekwaa oriri njupụta.
  • nkwupụta "iji" na ịgbatị ezinụlọ na-enye nkwado maka ịkọwapụta ụdịdị C++11 site na iji usoro "[[]]".
  • Agbakwunyere ọkọlọtọ "-Wreserved-identifier" iji gosipụta ịdọ aka ná ntị mgbe echekwabara ihe nchọpụta echekwabara na koodu njirimara.
  • Agbakwunyere ọkọlọtọ "-Wunused-but-set-parameter" na "-Wunused-but-set-variable" iji gosipụta ịdọ aka ná ntị ma ọ bụrụ na edobere oke ma ọ bụ mgbanwe mana ejighị ya.
  • Agbakwunyere ọkọlọtọ "-Wnull-pointer- subtraction" iji nye ịdọ aka ná ntị ma ọ bụrụ na koodu ahụ nwere ike iwebata omume akọwapụtaghị n'ihi iji ihe nrịbama efu na arụ ọrụ mwepu.
  • Agbakwunyere ọkọlọtọ "-fstack-usage" iji mepụta maka faịlụ koodu ọ bụla, faịlụ ".su" agbakwunyere nwere ozi gbasara nha nke okpokolo agba maka ọrụ ọ bụla akọwapụtara na faịlụ a na-ahazi.
  • Agbakwunyela ụdị mmepụta ọhụrụ na static analyzer - "sarif-html", nke na-eduga na ọgbọ akụkọ n'otu oge na HTML na Sarif formats. Agbakwunyere nlele allocClassWithAme ọhụrụ. Mgbe ị na-akọwa nhọrọ "-analyzer-display-progress" nhọrọ, a na-egosipụta oge nyocha nke ọrụ ọ bụla. The smart pointer analyzer (alpha.cplusplus.SmartPtr) adịla njikere.
  • A gbasaala ike ndị metụtara nkwado OpenCL. Nkwado agbakwunyere maka ngwaahịa cl_khr_integer_dot_product ọhụrụ, cl_khr_extended_bit_ops, __cl_clang_bitfields na __cl_clang_non_portable_kernel_param_types. Mmejuputa nkọwapụta OpenCL 3.0 gara n'ihu. Maka C, a na-eji nkọwapụta OpenCL 1.2 na ndabara ọ gwụla ma ahọpụtara ụdị ọzọ nke ọma. Maka C++, agbakwunyela nkwado maka faịlụ nwere ndọtị ".clcpp".
  • Nkwado maka ntuziaka mgbanwe loop ("#pragma omp unrol" na "#pragma omp tile") akọwapụtara na nkọwapụta OpenMP 5.1.
  • Nhọrọ agbakwunyere na ịba uru usoro clang: SpacesInLineCommentPrefix iji kọwapụta ọnụọgụ oghere tupu nkwupụta, IndentAccessModifiers, LambdaBodyIndentation na PPIndentWidth iji jikwaa nzizi ntinye, okwu lambda na ntuziaka onye bu ụzọ. Agbasawanyela ohere maka ịhazi ndenye aha faịlụ nkụnye eji isi mee (SortIncludes). Nkwado agbakwunyere maka ịhazi faịlụ JSON.
  • Agbakwunyela nnukwu akụkụ nke nlele ọhụrụ na linter clang-tidy.

Ihe ohuru ohuru na LLVM 13.0:

  • Agbakwunyere nhọrọ “-ehcontguard” iji teknụzụ CET (Windows Control-flow Enforcement Technology) iji kpuchido ime ihe arụrụ arụ arụrụ n'iji usoro Return-oriented Programming (ROP) na wezuga njikwa njikwa.
  • A kpọgharịrị ọrụ nyocha debuginfo-ule cross-project-ule ma emebere ya iji nwalee ihe ndị sitere na ọrụ dị iche iche, ọ bụghị naanị na nbibi ozi.
  • Usoro mgbakọ na-enye nkwado maka iwulite nkesa dị iche iche, dịka ọmụmaatụ, otu nwere akụrụngwa, na nke ọzọ nwere ụlọ akwụkwọ maka ndị mmepe.
  • Na azụ azụ maka AArch64 architecture, nkwado maka Armv9-A RME (Realm Management Extension) na SME (Scalable Matrix Extension) na-emejuputa atumatu n'ime onye na-ezukọta.
  • Agbakwunyela nkwado maka ISA V68/HVX na azụ azụ maka ihe owuwu Hexagon.
  • Ihe nkwado x86 emelitere nkwado maka ndị nrụpụta AMD Zen 3.
  • Nkwado agbakwunyere maka GFX1013 RDNA2 APU na azụ azụ AMDGPU.
  • Libc++ na-aga n'ihu na-emejuputa atụmatụ ọhụrụ nke ụkpụrụ C++20 na C++2b, gụnyere imecha ọba akwụkwọ "echiche". Nkwado agbakwunyere maka std :: faịlụ maka ikpo okwu Windows dabere na MinGW. Kewapụrụ faịlụ nkụnye eji isi mee , Na . Nhọrọ iwu agbakwunyere LIBCXX_ENABLE_INCOMPLETE_FEATURES iji gbanyụọ faịlụ nkụnye eji isi mee na-enweghị arụ ọrụ zuru oke.
  • A gbasaala ikike nke njikọ LLD, nke a na-emejuputa nkwado maka Big-endian Aarch64 processors, na Mach-O backend ebutela na steeti na-enye ohere ijikọ mmemme oge niile. Gụnyere nkwalite achọrọ iji jikọta Glibc site na iji LLD.
  • Ngwa lvm-mca (Machine Code Analyzer) agbakwunyela nkwado maka ndị nrụpụta na-eme ntuziaka n'usoro (pipiline nke superscalar n'usoro), dị ka ARM Cortex-A55.
  • LLDB debugger maka ikpo okwu AArch64 na-enye nkwado zuru oke maka nyocha Pointer, MTE (MemTag, Mgbatị mkpado ebe nchekwa) na ndekọ SVE. Iwu agbakwunyere na-enye gị ohere ijikọ mkpado na ọrụ nkesa ebe nchekwa ọ bụla wee hazie nlele nke pointer mgbe ị na-enweta ebe nchekwa, nke ga-ejikọta ya na mkpado ziri ezi.
  • LLDB debugger na ihu ihu maka asụsụ Fortran - Flang agbakwunyere na mgbakọ ọnụọgụ abụọ nke ọrụ ahụ mepụtara.

isi: opennet.ru

Tinye a comment