Release av LLVM 13.0-kompilatorpaketet

Efter sex mÄnaders utveckling presenterades lanseringen av LLVM 13.0-projektet - en GCC-kompatibel verktygslÄda (kompilatorer, optimerare och kodgeneratorer) som kompilerar program till mellanliggande bitkod av RISC-liknande virtuella instruktioner (en virtuell maskin pÄ lÄg nivÄ med en optimeringssystem pÄ flera nivÄer). Den genererade pseudokoden kan konverteras med hjÀlp av en JIT-kompilator till maskininstruktioner direkt vid tidpunkten för programexekveringen.

FörbÀttringar i Clang 13.0:

  • Garanterade svansanrop (anrop av en subrutin i slutet av en funktion, vilket skapar en svansrekursion om subrutinen anropar sig sjĂ€lv) stöds. Garanterade svansanrop stöds med attributet "[[clang::musttail]]" i C++ och "__attribute__((musttail))" i C, som anvĂ€nds i uttrycket "return". Denna funktion möjliggör optimeringar genom att kod utvecklas till en platt iteration för att spara stackutrymme.
  • Attributdefinitioner i C++11-stil stöds nu i clang "using"-deklarationer och -tillĂ€gg, med formatet "[[]]".
  • Lade till flaggan "-Wreserved-identifier" för att visa en varning nĂ€r reserverade identifierare anges i anvĂ€ndarkod.
  • Lade till flaggorna "-Wunused-but-set-parameter" och "-Wunused-but-set-variable" för att skriva ut en varning om en parameter eller variabel Ă€r instĂ€lld men inte anvĂ€nds.
  • Lade till flaggan "-Wnull-pointer-subtraction" för att varna om kod kan leda till odefinierat beteende pĂ„ grund av anvĂ€ndning av en nullpekare i subtraktionsoperationer.
  • Lade till flaggan "-fstack-usage" för att generera en ytterligare ".su"-fil för varje kodfil som innehĂ„ller information om storleken pĂ„ stackframes för varje funktion som definieras i filen som bearbetas.
  • En ny utdatatyp har lagts till i den statiska analysatorn — "sarif-html", vilket resulterar i att rapporter skapas i bĂ„de HTML- och Sarif-format. En ny kontroll har lagts till allocClassWithName. NĂ€r alternativet "-analyzer-display-progress" anges, matas analystiden för varje funktion ut. Den smarta pekaranalysatorn (alpha.cplusplus.SmartPtr) Ă€r nĂ€stan klar.
  • Utökade funktioner relaterade till OpenCL-stöd. Lade till stöd för nya tillĂ€gg cl_khr_integer_dot_product, cl_khr_extended_bit_ops, __cl_clang_bitfields och __cl_clang_non_portable_kernel_param_types. Fortsatt implementering av OpenCL 3.0-specifikationen. För C anvĂ€nds OpenCL 1.2-specifikationen som standard, sĂ„vida inte en annan version uttryckligen vĂ€ljs. För C++ har stöd för filer med tillĂ€gget ".clcpp" lagts till.
  • Stöd för looptransformationsdirektiv ("#pragma omp unrol" och "#pragma omp tile") som definieras i OpenMP 5.1-specifikationen har implementerats.
  • Verktyget clang-format har uppdaterats med följande alternativ: SpacesInLineCommentPrefix för att bestĂ€mma antalet mellanslag före kommentarer, IndentAccessModifiers, LambdaBodyIndentation och PPIndentWidth för att styra justeringen av poster, lambda-uttryck och preprocessordirektiv. Möjligheten att sortera listan över headerfiler (SortIncludes) har utökats. Stöd för formatering av JSON-filer har lagts till.
  • En stor mĂ€ngd nya checkar har lagts till i det klang-tidy-skjortorna.

Viktiga innovationer i LLVM 13.0:

  • Lade till alternativet "-ehcontguard" för att anvĂ€nda CET-teknik (Windows Control-flow Enforcement Technology) för att skydda mot exekvering av exploitationer som byggts med returorienterad programmering (ROP) i undantagshanteringsskedet.
  • Projektet debuginfo-test har bytt namn till cross-project-tests och Ă€r utformat för att testa komponenter frĂ„n olika projekt, inte begrĂ€nsat till felsökningsinformation.
  • Byggsystemet ger stöd för att bygga flera distributioner, till exempel en med verktyg och den andra med bibliotek för utvecklare.
  • Backend-grĂ€nssnittet för AArch64-arkitekturen implementerar stöd för Armv9-A RME- och SME-tillĂ€ggen (Realm Management Extension) i assembler.
  • Stöd för ISA V68/HVX har lagts till i Hexagon-arkitekturens backend.
  • X86-backend har förbĂ€ttrat stöd för AMD Zen 3-processorer.
  • Lade till stöd för GFX1013 RDNA2 APU till AMDGPU-backend.
  • Libc++ fortsĂ€tter att implementera nya funktioner i C++20- och C++2b-standarderna, inklusive fĂ€rdigstĂ€llandet av "concepts"-biblioteket. För plattformen Windows Lade till stöd för std::filesystem baserat pĂ„ MinGW. Headerfiler har separerats. , Och Lade till byggalternativet LIBCXX_ENABLE_INCOMPLETE_FEATURES för att inaktivera headerfiler med ofullstĂ€ndig funktionalitet.
  • LLD-lĂ€nkaren har utökats för att stödja Big-endian Aarch64-processorer, och Mach-O-backend har förbĂ€ttrats för att möjliggöra lĂ€nkning av vanliga program. FörbĂ€ttringar som Ă€r nödvĂ€ndiga för att lĂ€nka Glibc med LLD ingĂ„r.
  • Verktyget llvm-mca (Machine Code Analyzer) har uppdaterats för att stödja superskalĂ€ra pipeline-processorer i ordning, till exempel ARM Cortex-A55.
  • LLDB-felsökaren för AArch64-plattformen har nu fullt stöd för Pointer Authentication, MTE-mekanismen (MemTag, Memory Tagging Extension) och SVE-register. Kommandon har lagts till för att binda taggar till varje minnesallokeringsoperation och för att kontrollera pekaren vid Ă„tkomst till minne, vilket mĂ„ste vara bundet till en giltig tagg.
  • LLDB-felsökaren och Fortran-grĂ€nssnittet Flang har lagts till i de binĂ€ra sammansĂ€ttningar som genereras av projektet.

KĂ€lla: opennet.ru

Köp pĂ„litlig hosting för webbplatser med DDoS-skydd, VPS VDS-servrar đŸ”„ Köp pĂ„litlig webbhotell med DDoS-skydd, VPS VDS-servrar | ProHoster