LLVM 12.0 har redan släppts och det här är dess nyheter

LLVM

Efter sex månaders utveckling lanseringen av den nya versionen av LLVM 12.0-projektet presenterades GCC (Compilers, Optimizers, and Code Generators) kompatibel som kompilerar program till mellanliggande bitkod av virtuella instruktioner som liknar RISC (en virtuell maskin på låg nivå med ett optimeringssystem på flera nivåer).

I den här nya versionen vi kan hitta olika förbättringar och nyheter, varav vi kan markera ett nytt funktionsattribut "tune-cpu" för att stödja -mtune som gcc, samt förbättringar av de olika plattformarna.

De viktigaste nya funktionerna i LLVM 12.0

I den här nya versionen kan vi hitta det stöd för verktyget llvm-build build skrivet i python har upphört, istället för vilket projektet helt har bytt till att använda CMake-byggsystemet.

Backend för AArch64-arkitekturen har förbättrat stödet för Windows-plattformen: rätt generering av assemblerutdata tillhandahålls för mål-Windows-system, generering av data på varningssamtal har optimerats (storleken på sådana data har minskats med 60%), förmågan att skapa data har lagts till varv med seh-direktiv.

Medan PowerPC-arkitekturbackend inkluderar nya optimeringar för inline- och loop-distributionerförbättringar av stöd för Power10-processorer, ytterligare stöd för MMA-instruktioner för att manipulera matriser och förbättrat stöd för AIX-operativsystemet.

till x86 lade till stöd för AMD Zen 3, Intel Alder Lake och Intel Sapphire Rapids-processorer, samt instruktioner för HRESET-, UINTR- och AVXVNNI-processorer. Borttaget stöd för MPX-tillägg (minneskyddstillägg) för att kontrollera pekare mot minnesområdesgränser (denna teknik har inte använts i stor utsträckning och har sedan tagits bort från GCC och clang). Monteraren har lagt till stöd för prefixen {disp32} och {disp8} och suffixen .d32 och .d8 för att styra storleken på förskjutningen av operander och övergångar. Ett nytt attribut "tune-cpu" lades till för att styra aktiveringen av mikroarkitekturoptimeringar.

En annan förändring som sticker ut är att ett nytt läge har lagts till "-fsanitize = unsigned-shift-base" för att upptäcka osignerade heltalsflöden efter en bit förskjutning åt vänster. För Mach-O (macOS) -formatet implementeras stöd för arm64-, arm- och i386-arkitekturer, länkstegsoptimering (LTO) och stack-varning vid hantering av undantag.

också ett nytt attribut "tune-cpu" är markerat som gör att omikroarkitekturoptimeringar tillämpas oavsett attributet "target-cpu" eller TargetMachine CPU som kommer att användas för att välja instruktionsuppsättning. Om attributet inte är närvarande kommer inställningsprocessorn att följa mål-CPU: n.

Libc ++ implementerar nya funktioner i C ++ 20-standarden och började utveckla funktioner i C ++ 2b-specifikationen, plus lagt till stöd för montering med inaktivera stöd för lokalisering ("-DLIBCXX_ENABLE_LOCALIZATION = AV") och enheter för att generera pseudoslumpmässiga nummer.

Medan av förbättringarna för Clang 12, för AArch64-arkitekturen, har nya kompilatorflaggor lagts till "-Moutline-atomics" och "-mno-outline-atomics" för att aktivera och inaktivera atomhjälpfunktioner som "__aarch64_cas8_relax". Dessa körtidsfunktioner avgör om det finns stöd för stora systemtillägg (LSE) och använder de medföljande atomprocessorinstruktionerna eller återställning för att använda LL / SC (Load-link / store-conditional) instruktioner för synkronisering.

Den här '' pekaren behandlas nu med kontroller som inte är noll och inte kan avläsas (N). Alternativet "-fdelete-null-pointer-checks" kan användas för att ta bort attributet non-null när nullvärden krävs.

I Linux för AArch64- och PowerPC-arkitekturerna är "-fasynchronous -wind-tables" aktiverat för att generera tabeller med rollanrop, som i GCC.

I "#pragma clang loop vectorize_width" lades till möjligheten att specificera "fixerade" (standard) och "skalbara" alternativ för att välja vektoriseringsmetoden.

I clangd-cachingservern (Clang Server) på Linux minskas minnesförbrukningen under långvarig drift avsevärt (ett periodiskt samtal till malloc_trim tillhandahålls för att returnera lediga minnessidor till operativsystemet).

Slutligen om du är intresserad av att veta mer om det om den här nya versionen kan du Se detaljerna nedan. länken.


Lämna din kommentar

Din e-postadress kommer inte att publiceras. Obligatoriska fält är markerade med *

*

*

  1. Ansvarig för data: AB Internet Networks 2008 SL
  2. Syftet med uppgifterna: Kontrollera skräppost, kommentarhantering.
  3. Legitimering: Ditt samtycke
  4. Kommunikation av uppgifterna: Uppgifterna kommer inte att kommuniceras till tredje part förutom enligt laglig skyldighet.
  5. Datalagring: databas värd för Occentus Networks (EU)
  6. Rättigheter: När som helst kan du begränsa, återställa och radera din information.