LLVM 12.0 již byl vydán a toto jsou jeho novinky

LLVM

Po šesti měsících vývoje bylo představeno spuštění nové verze projektu LLVM 12.0 Kompatibilní s GCC (kompilátory, optimalizátory a generátory kódu), který kompiluje programy do prostředního bitového kódu virtuálních instrukcí podobných RISC (virtuální počítač nízké úrovně s víceúrovňovým optimalizačním systémem).

V této nové verzi můžeme najít různá vylepšení a novinky, z nichž můžeme zvýraznit nový atribut funkce „tune-cpu“ pro podporu -mtune jako gcc, stejně jako vylepšení různých platforem.

Hlavní nové funkce LLVM 12.0

V této nové verzi to můžeme najít podpora sady nástrojů pro sestavení llvm-build napsáno v pythonu byla ukončena, místo toho se projekt zcela přepnul na používání systému CMake build.

Backend pro architekturu AArch64 má vylepšenou podporu pro platformu Windows: pro cílové systémy Windows je zajištěno správné generování výstupu assembleru, bylo optimalizováno generování dat na odvíjecích hovorech (velikost těchto dat byla snížena o 60%), byla přidána schopnost vytvářet data odvíjena pomocí seh direktiv.

zatímco Backend architektury PowerPC obsahuje nové optimalizace pro inline a loop nasazení, vylepšení podpory pro procesory Power10, další podpora instrukcí MMA pro manipulaci s poli a vylepšená podpora pro operační systém AIX.

na x86 přidána podpora pro procesory AMD Zen 3, Intel Alder Lake a Intel Sapphire Rapids, stejně jako pokyny pro procesory HRESET, UINTR a AVXVNNI. Odebrána podpora pro rozšíření MPX (rozšíření ochrany paměti) ke kontrole ukazatelů na limity oblasti paměti (tato technologie nebyla široce používána a již byla odstraněna z GCC a clang). Assembler přidal podporu předpon {disp32} a {disp8} a přípon .d32 a .d8 pro ovládání velikosti posunutí operandů a přechodů. Byl přidán nový atribut „tune-cpu“, který ovládá povolení mikroarchitekturních optimalizací.

Další změna, která vyniká, je ta byl přidán nový režim "-fsanitize = unsigned-shift-base" detekovat přetečení celých čísel bez znaménka po malém posunutí doleva. U formátu Mach-O (macOS) je implementována podpora pro architektury arm64, arm a i386, optimalizace fáze propojení (LTO) a uvolnění zásobníku při zpracování výjimek.

také je zvýrazněn nový atribut funkce „tune-cpu“ který umožňuje ooptimalizace mikroarchitektury jsou použity bez ohledu na atribut „target-cpu“ nebo z CPU TargetMachine, který bude použit k výběru sady instrukcí. Pokud atribut není k dispozici, bude ladicí CPU sledovat cílový CPU.

Libc ++ implementuje nové funkce standardu C ++ 20 a začal vyvíjet funkce specifikace C ++ 2b plus přidána podpora pro sestavování s deaktivací podpory pro lokalizaci ("-DLIBCXX_ENABLE_LOCALIZATION = OFF") a zařízení pro generování pseudonáhodných čísel.

zatímco vylepšení pro Clang 12, pro architekturu AArch64, byly přidány nové příznaky kompilátoru „-Moutline-atomics“ a „-mno-outline-atomics“ k povolení a zakázání funkcí pomocných atomů, jako je „__aarch64_cas8_relax“. Tyto runtime funkce určují, zda existuje podpora pro velká rozšíření systému (LSE), a pomocí poskytnutých instrukcí atomického procesoru nebo vrácení zpět k použití instrukcí LL / SC (Load-link / store-conditional) pro synchronizaci.

Ukazatel „tento“ je nyní zpracován s nenulovými a dereferenčními kontrolami (N). Možnost "-fdelete-null-pointer-checks" lze použít k odebrání nenulového atributu, když jsou požadovány nulové hodnoty.

V Linuxu pro architektury AArch64 a PowerPC je povoleno generovat „-fasynchronous -wind-tables“ pro generování tabulek průběžných volání, jako v GCC.

V „#pragma clang loop vectorize_width“ byla přidána možnost specifikovat možnosti „fixed“ (výchozí) a „scalable“ pro výběr metody vektorizace.

Na serveru pro ukládání do mezipaměti clangd (Clang Server) v systému Linux je spotřeba paměti během dlouhodobého provozu významně snížena (je poskytováno pravidelné volání malloc_trim pro vrácení stránek s volnou pamětí do operačního systému).

Konečně pokud máte zájem o tom vědět více o této nové verzi můžete Podrobnosti naleznete v následujícím textu. odkaz


Zanechte svůj komentář

Vaše e-mailová adresa nebude zveřejněna. Povinné položky jsou označeny *

*

*

  1. Za data odpovídá: AB Internet Networks 2008 SL
  2. Účel údajů: Ovládací SPAM, správa komentářů.
  3. Legitimace: Váš souhlas
  4. Sdělování údajů: Údaje nebudou sděleny třetím osobám, s výjimkou zákonných povinností.
  5. Úložiště dat: Databáze hostovaná společností Occentus Networks (EU)
  6. Práva: Vaše údaje můžete kdykoli omezit, obnovit a odstranit.