LLVM 12.0 został już wydany i to są jego nowości

LLVM

Po sześciu miesiącach rozwoju zaprezentowano uruchomienie nowej wersji projektu LLVM 12.0 Zgodność z GCC (kompilatory, optymalizatory i generatory kodu), która kompiluje programy do pośredniego kodu bitowego instrukcji wirtualnych podobnych do RISC (maszyna wirtualna niskiego poziomu z wielopoziomowym systemem optymalizacji).

W tej nowej wersji możemy znaleźć różne ulepszenia i nowości, z których możemy wyróżnić nowy atrybut funkcji "tune-cpu" obsługujący -mtune jako gcc, a także ulepszenia różnych platform.

Główne nowe funkcje LLVM 12.0

W tej nowej wersji możemy to znaleźć wsparcie dla zestawu narzędzi llvm-build napisane w Pythonie zostało przerwane, zamiast którego projekt całkowicie przełączył się na używanie systemu kompilacji CMake.

Backend dla architektury AArch64 ma ulepszoną obsługę platformy Windows: zapewniono poprawne generowanie wyjścia asemblera dla docelowych systemów Windows, zoptymalizowano generowanie danych przy wywołaniach odwijania (rozmiar takich danych został zmniejszony o 60%), dodano możliwość tworzenia danych rozwiń za pomocą dyrektyw seh.

Podczas Backend architektury PowerPC zawiera nowe optymalizacje dla wdrożeń inline i loop, ulepszona obsługa procesorów Power10, dodatkowa obsługa instrukcji MMA do manipulowania tablicami oraz ulepszona obsługa systemu operacyjnego AIX.

do x86 dodano obsługę procesorów AMD Zen 3, Intel Alder Lake i Intel Sapphire Rapids, a także instrukcje dotyczące procesorów HRESET, UINTR i AVXVNNI. Usunięto obsługę rozszerzeń MPX (rozszerzeń ochrony pamięci) w celu sprawdzenia wskaźników względem limitów obszaru pamięci (ta technologia nie była szeroko stosowana i od tego czasu została usunięta z GCC i clang). Asembler dodał obsługę przedrostków {disp32} i {disp8} oraz przyrostków .d32 i .d8, aby kontrolować rozmiar przesunięcia operandów i przejść. Dodano nowy atrybut „tune-cpu”, aby sterować włączaniem optymalizacji mikroarchitekturalnych.

Kolejną wyróżniającą się zmianą jest to dodano nowy tryb "-fsanitize = unsigned-shift-base" do wykrywania przepełnień liczb całkowitych bez znaku po przesunięciu bitu w lewo. W przypadku formatu Mach-O (macOS) zaimplementowano obsługę architektur arm64, arm i i386, optymalizację etapu łącza (LTO) i rozwijanie stosu podczas obsługi wyjątków.

również podświetlony jest nowy atrybut funkcji „tune-cpu” to pozwala na oOptymalizacje mikroarchitektury są stosowane niezależnie od atrybutu „target-cpu” lub TargetMachine CPU, który zostanie użyty do wybrania zestawu instrukcji. Jeśli atrybut nie jest obecny, procesor dostrajający będzie podążał za docelowym procesorem.

Libc ++ implementuje nowe funkcje standardu C ++ 20 i zaczął rozwijać funkcje specyfikacji C ++ 2b plus dodano obsługę asemblacji z wyłączoną obsługą lokalizacji ("-DLIBCXX_ENABLE_LOCALIZATION = OFF") i urządzenia do generowania liczb pseudolosowych.

Podczas ulepszeń dla Clang 12, dla architektury AArch64, dodano nowe flagi kompilatora „-Moutline-atomics” i „-mno-outline-atomics”, aby włączyć i wyłączyć atomowe funkcje pomocnicze, takie jak „__aarch64_cas8_relax”. Te funkcje środowiska wykonawczego określają, czy istnieje obsługa dużych rozszerzeń systemowych (LSE) i używają dostarczonych instrukcji atomowego procesora lub wycofywania, aby używać instrukcji LL / SC (Load-link / store-conditional) do synchronizacji.

Wskaźnik „this” jest teraz przetwarzany z niezerowymi kontrolami i możliwością wyłuskiwania (N). Opcji „-fdelete-null-pointer-Checks” można użyć do usunięcia atrybutu innego niż null, gdy wymagane są wartości null.

W Linuksie dla architektur AArch64 i PowerPC, opcja „-fasynchronous -wind-table” jest włączona, aby generować tabele wywołań zgłoszeń, tak jak w GCC.

W "#pragma clang loop vectorize_width" dodano możliwość określenia "stałych" (domyślnych) i "skalowalnych" opcji wyboru metody wektoryzacji.

W serwerze pamięci podręcznej clangd (Clang Server) w systemie Linux zużycie pamięci podczas długotrwałej pracy jest znacznie zmniejszone (zapewniane jest okresowe wywołanie malloc_trim w celu zwrócenia wolnych stron pamięci do systemu operacyjnego).

W końcu jeśli chcesz dowiedzieć się więcej na ten temat o tej nowej wersji, możesz Proszę zapoznać się ze szczegółami poniżej. link


Zostaw swój komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *

*

*

  1. Odpowiedzialny za dane: AB Internet Networks 2008 SL
  2. Cel danych: kontrola spamu, zarządzanie komentarzami.
  3. Legitymacja: Twoja zgoda
  4. Przekazywanie danych: Dane nie będą przekazywane stronom trzecim, z wyjątkiem obowiązku prawnego.
  5. Przechowywanie danych: baza danych hostowana przez Occentus Networks (UE)
  6. Prawa: w dowolnym momencie możesz ograniczyć, odzyskać i usunąć swoje dane.