Fa'asa'olotoina le seti LLVM 13.0 tu'ufa'atasi

Ina ua maeʻa le ono masina o le atinaʻe, na tuʻuina atu ai le faʻasalalauga o le LLVM 13.0 poloketi - o se meafaigaluega e fetaui ma le GCC (faʻapipiʻi, faʻapipiʻi ma faʻasologa o tulafono) e tuʻufaʻatasia polokalame i totonu ole bitcode ole RISC-pei o faʻatonuga faʻapitoa (o se masini komepiuta maualalo ma se multi-level optimization system). O le pseudocode fa'atupuina e mafai ona liua e fa'aaoga ai le JIT compiler i fa'atonuga masini i le taimi o le fa'atinoga o polokalame.

Fa'aleleia ile Clang 13.0:

  • Fa'atinoina le lagolago mo le fa'amautinoaina o telefoni si'usi'u (valaau o se subroutine i le pito tonu o se galuega, fai se toe fa'afo'i si'usi'u pe a vala'au le subroutine ia lava). Lagolago mo valaau si'usi'u mautinoa e saunia e le uiga "[[clang::musttail]]" i le C++ ma le "__attribute__((musttail))" i le C, faʻaaogaina i se faʻamatalaga "toe foʻi". O le ata e mafai ai ona e faʻatinoina faʻataʻitaʻiga e ala i le faʻapipiʻiina o code i totonu o se faʻataʻitaʻiga e faʻasaoina ai le faʻaputuga taumafa.
  • "fa'aogaina" ta'utinoga ma fa'aopoopoga clang e maua ai le lagolago mo le fa'amalamalamaina o uiga o le C++11 e fa'aaoga ai le fa'atulagaga "[[]]".
  • Fa'aopoopo le fu'a "-Wreserved-identifier" e fa'aalia ai se lapata'iga pe a e fa'ama'oti fa'ailoga fa'aagaaga ile fa'ailoga tagata.
  • Faʻaopoopo "-Wunused-but-set-parameter" ma le "-Wunused-but-set-variable" fuʻa e faʻaalia ai se lapataiga pe a fai o se parakalafa poʻo se fesuiaiga e seti ae le faʻaaogaina.
  • Fa'aopoopoina le fu'a "-Wnull-pointer-subtraction" e tu'uina atu ai se lapata'iga pe afai e ono fa'ailoa mai e le tulafono le amio e le'i fa'amalamalamaina ona o le fa'aogaina o le fa'ailo fa'aleaogaina i galuega to'ese.
  • Fa'aopoopoina le fu'a "-fstack-usage" e fa'atupu ai mo faila fa'ailoga ta'itasi se faila fa'aopoopo ".su" o lo'o iai fa'amatalaga e uiga i le tele o fa'aputugā fa'avaa mo galuega ta'itasi o lo'o fa'amatalaina i le faila o lo'o fa'agasolo.
  • Ua fa'aopoopoina se ituaiga galuega fou i le static analyzer - "sarif-html", lea e tau atu i le fa'atupuina o lipoti i le taimi e tasi i HTML ma Sarif formats. Fa'aopoopo le siaki fou allocClassWithName. Pe a faʻamaonia le "-analyzer-display-progress" filifiliga, o le taimi suʻesuʻe o galuega taʻitasi e faʻaalia. Le su'esu'e fa'ailoga atamai (alpha.cplusplus.SmartPtr) ua toeitiiti lava saunia.
  • O agava'a e feso'ota'i ma le OpenCL lagolago ua fa'alauteleina. Fa'aopoopo le lagolago mo fa'aopoopoga fou cl_khr_integer_dot_product, cl_khr_extended_bit_ops, __cl_clang_bitfields ma __cl_clang_non_portable_kernel_param_types. O loʻo faʻaauau pea le faʻatinoina o le OpenCL 3.0 faʻamatalaga. Mo C, o le OpenCL 1.2 faʻamatalaga e faʻaaogaina e le mafai seʻi vagana ua filifilia manino se isi faʻamatalaga. Mo C++, lagolago mo faila ma le faʻaopoopoga ".clcpp" ua faʻaopoopoina.
  • Lagolago mo fa'atonuga o suiga o le matasele ("#pragma omp unrol" ma le "#pragma omp tile") fa'amatalaina i le OpenMP 5.1 fa'amatalaga ua fa'atinoina.
  • Fa'aopoopo filifiliga ile clang-format utility: SpacesInLineCommentPrefix e fa'amatala ai le numera o avanoa a'o le'i fa'amatalaga, IndentAccessModifiers, LambdaBodyIndentation ma PPIndentWidth e pulea ai le fa'aogaina o fa'amaumauga, fa'aaliga lambda ma fa'atonuga muamua. O avanoa mo le fa'avasegaina o le fa'asologa o faila faila (SortIncludes) ua fa'alauteleina. Fa'aopoopo le lagolago mo le fa'atulagaina o faila JSON.
  • O se vaega tele o siaki fou ua fa'aopoopoina i le fa'amama fa'amama.

Faiga fou autu ile LLVM 13.0:

  • Faʻaopoopo le "-ehcontguard" filifiliga e faʻaaoga ai le CET (Windows Control-flow Enforcement Technology) tekinolosi e puipuia ai mai le faʻatinoina o faʻaoga faʻaogaina e faʻaogaina ai le Return-Oriented Programming (ROP) i le tulaga o le faʻaogaina o le tuusaunoaga.
  • O le debuginfo-test project ua toe fa'aigoaina cross-project-tests ma ua mamanuina e fa'ata'ita'i vaega mai galuega eseese, e le gata i fa'amatalaga fa'alilolilo.
  • O le faiga fa'apotopotoga e maua ai le lagolago mo le fausiaina o le tele o tufatufaga, mo se fa'ata'ita'iga, o le tasi fa'atasi ma mea fa'aoga, ma le isi ma faletusi mo le au atina'e.
  • I le pito i tua mo le fausaga o le AArch64, o le lagolago mo le Armv9-A RME (Realm Management Extension) ma le SME (Scalable Matrix Extension) faʻaopoopoga o loʻo faʻatinoina i le assembler.
  • Lagolago mo ISA V68/HVX ua faaopoopo i le pito i tua mo le fausaga Hexagon.
  • O le x86 pito i tua ua faʻaleleia atili le lagolago mo AMD Zen 3 processors.
  • Faʻaopoopo le lagolago mo GFX1013 RDNA2 APU i le AMDGPU pito i tua.
  • O loʻo faʻaauau pea ona faʻatinoina e le Libc ++ ni foliga fou o le C++ 20 ma le C ++ 2b tulaga, e aofia ai le faʻamaeʻaina o le faletusi "manatu". Fa'aopoopoina le lagolago mo le std::filesystem mo le MinGW-based Windows platform. Ua tuueseese faila ulutala , Ma . Fa'aopoopo le filifiliga fau LIBCXX_ENABLE_INCOMPLETE_FEATURES e fa'amalo ai faila fa'aulu e le'i atoatoa ona fa'atinoina.
  • O le gafatia o le LLD linker ua faʻalauteleina, lea o loʻo faʻatinoina ai le lagolago mo Big-endian Aarch64 processors, ma le Mach-O backend ua aumaia i se setete e mafai ai ona fesoʻotaʻi polokalame masani. E aofia ai fa'aleleia atili e mana'omia e feso'ota'i ai Glibc fa'aoga LLD.
  • O le llvm-mca (Machine Code Analyzer) ua fa'aopoopoina le lagolago mo fa'atonuga e fa'atino fa'atonuga (in-order superscalar pipeline), e pei o le ARM Cortex-A55.
  • O le LLDB debugger mo le AArch64 platform e maua ai le lagolago atoatoa mo le Fa'amaoniaina o Pointer, MTE (MemTag, Memory Tagging Extension) ma SVE resitala. Faʻaopoopo tulafono e faʻatagaina oe e fusifusia faʻailoga i faʻagaioiga vaevaega taʻitasi ma faʻatulaga se siaki o le faʻailoga pe a maua le manatua, lea e tatau ona fesoʻotaʻi ma le pine saʻo.
  • O le LLDB debugger ma le pito i luma mo le gagana Fortran - Flang ua faʻaopoopoina i faʻapotopotoga binary na faia e le poloketi.

puna: opennet.ru

Faaopoopo i ai se faamatalaga