LLVM 13.0 kompilaatori komplekti vÀljaanne

Kuue kuu arendustöö jĂ€rel on vĂ€lja antud LLVM 13.0 — GCC-ĂŒhilduva tööriistakomplekti (kompilaatorid, optimeerijad ja koodigeneraatorid) versioon, mis kompileerib programme RISC-sarnase virtuaalsete kĂ€skude vahefailiks (madala taseme virtuaalne masin, millel on mitmeastmeline optimeerimissĂŒsteem). Genereritud pseudokood saab JIT-kompilaatori abil muundada masiinijuhisteks otse programmi tĂ€itmise hetkel.

Clang 13.0 parendused:

  • On rakendatud garanteeritud sabakutsumise toe (alprogrammi kutsumine funktsiooni lĂ”pus, tekitades sabarekursiooni, kui alprogramm kutsub end ise). Garanteeritud sabakutsumise tugi on tagatud atribuutide "[[clang::musttail]]" C++-s ja "__attribute__((musttail))" C-s, mida kasutatakse vĂ€ljendis "return". See vĂ”imalus vĂ”imaldab rakendada optimeerimisi koodi tasandamisel plaana iteratsiooniks, et sÀÀsta virna kasutamist.
  • C++11 stiilis atribuutide mÀÀramise toeks on clangis rakendatud "using" deklaratsioonide ja laienduste toetamist, kasutades formaati "[[]]".
  • Lisatud lipp „-Wreserved-identifier”, et kuvada hoiatus, kui kasutajakoodis on mÀÀratud reserveeritud identifikaatorid.
  • Lisatud lipud „-Wunused-but-set-parameter” ja „-Wunused-but-set-variable”, et kuvada hoiatus, kui parameeter vĂ”i muutujad on mÀÀratud, kuid neid ei kasutata.
  • Lisatud lipp „-Wnull-pointer-subtraction”, et kuvada hoiatus, kui kood vĂ”ib pĂ”hjustada ettearvamatut kĂ€itumist nullviite kasutamise tĂ”ttu lahutustegevustes.
  • Lisatud lipp „-fstack-usage”, et iga koodifaili jaoks genereerida tĂ€iendav fail „.su”, mis sisaldab teavet iga töötlusfailis defineeritud funktsiooni virna suuruse kohta.
  • Statistilise analĂŒsaatori juurde on lisatud uus vĂ€ljunditĂŒĂŒp — „sarif-html”, mis genereerib aruandeid samaaegselt nii HTML- kui ka Sarif-formaatides. Lisatud on uus kontroll allocClassWithName. Kui on mÀÀratud valik „-analyzer-display-progress”, tagatakse iga funktsiooni analĂŒĂŒsi aja vĂ€ljund. Peaaegu valmis on nutikate viidete analĂŒsaator (alpha.cplusplus.SmartPtr).
  • Avatud CLi toetuse vĂ”imalused on laienenud. Lisatud toetused uutele laiendustele cl_khr_integer_dot_product, cl_khr_extended_bit_ops, __cl_clang_bitfields ja __cl_clang_non_portable_kernel_param_types. Protsesside OpenCL 3.0 spetsifikatsiooni elluviimine jĂ€tkub. C keele puhul on vaikimisi aktiivne OpenCL 1.2 spetsifikatsioon, kui ei ole selgelt valitud muud versioonid. C++ puhul on lisatud toetust failide laiendusele '.clcpp'.
  • Töösse on vĂ”etud seeria tsĂŒklite transformatsioonide direktiivide toetust ('#pragma omp unrol' ja '#pragma omp tile'), nagu on mÀÀratletud OpenMP 5.1 spetsifikatsioonis.
  • Clang-foormingu utiliidi on lisatud valikud: SpacesInLineCommentPrefix kommentaaride ette tĂŒhi, IndentAccessModifiers, LambdaBodyIndentation ja PPIndentWidth, et hallata kirje, lambda-vĂ€ljendite ja eelprotsessori direktiivide joondamist. Pealkirjade faili sortimise funktsionaalsust on laiendatud (SortIncludes). Lisatud on JSON-failide vormindamise tugi.
  • Clang-tidy linterisse on lisatud palju uusi kontrollimist.

LLVM 13.0 pÔhimuudatused:

  • Lisatud on -ehcontguard valik CET (Windowsi kontrollvoo kaitsetehnoloogia) kasutamiseks, et kaitsta eranditöötluse etapis ekspluatatsiooni kasutamise eest, mis pĂ”hinevad tagasikutsumise orientatsiooniga programmeerimise (ROP, Return-Oriented Programming) tehnikatel.
  • Projekt debuginfo-test on ĂŒmber nimetatud cross-project-tests ja see on mĂ”eldud erinevate projektide komponentide testimiseks, piiramata ainult tĂ”rkeandmetega.
  • KogumisĂŒsteemis on tagatud mitme jaotuse kogumise tugi, nĂ€iteks ĂŒks utiliitide jaoks ja teine arendajate raamatukogude jaoks.
  • Backendis AArch64 arhidektuuri jaoks on assembleris rakendatud Armv9-A RME (Realm Management Extension) ja SME (Scalable Matrix Extension) laienduste tugi.
  • Hexagon arhidektuuri backendis on lisatud ISA V68/HVX tugi.
  • x86 arhidektuuri backendis on tĂ€iustatud AMD Zen 3 protsessorite tuge.
  • AMDGPU backendis on lisatud APU GFX1013 RDNA2 tugi.
  • Libc++-s on C++20 ja C++2b standardite uute vĂ”imaluste rakendamine jĂ€tkub, sealhulgas «concepts» teegi rakendamine on lĂ”pule viidud. Windowsi MinGW platvormile on lisatud std::filesystem tugi. Pealkirjafailid <algorithm>, <iterator> ja <utility> on eraldatud. Lisatud on LIBCXX_ENABLE_INCOMPLETE_FEATURES kompileerimise valik, et keelata mitte tĂ€ielikult rakendatud funktsionaalsusega pealkirjafailide kasutamine.
  • LLD sidujale on lisatud uusi vĂ”imalusi, sealhulgas Big-endian Aarch64 protsessorite toete, ning Mach-O taust on viidud sellisesse seisu, et see vĂ”imaldab tavaliste programmide sidumist. Lisatud on tĂ€iustused, mis on vajalikud Glibc sidumiseks LLD abil.
  • Utilliti llvm-mca (Machine Code Analyzer) on lisatud tugi protsessoritele, mis töötlevad juhiseid jĂ€rjestikku (in-order superscalar pipeline), nĂ€iteks ARM Cortex-A55.
  • AArch64 platvormi LLDB tĂ”rkeotsijale on rakendatud tĂ€ielik tugi osutite autentimisele (Pointer Authentication), MTE (MemTag, Memory Tagging Extension) mehhanismile ja SVE registritele. Lisatud on kĂ€sud, mis vĂ”imaldavad igale mĂ€luhalduse toimingule sildistada teid ning korraldada mĂ€lule juurdepÀÀsu korral osutite kontrolli, mis peab olema seotud Ă”ige sildiga.
  • Projekti genereeritavate binaarkogude hulka on lisatud tĂ”rkeotsija LLDB ja Fortrani keele frontend - Flang.

Allikas: opennet.ru

Osta usaldusvÀÀrne veebihosting DDoS kaitsega, VPS VDS serverid đŸ”„ Osta usaldusvÀÀrne veebihosting DDoS kaitsega, VPS VDS serverid | ProHoster