LLVM 12.0 вече е пуснат и това са неговите новини

LLVM

След шест месеца развитие беше представено стартирането на новата версия на проекта LLVM 12.0 Съвместим с GCC (компилатори, оптимизатори и генератори на код), който компилира програми в междинен битов код на виртуални инструкции, подобни на RISC (виртуална машина на ниско ниво със система за оптимизиране на много нива).

В тази нова версия можем да намерим различни подобрения и новини, от които можем да откроим нов атрибут на функцията "tune-cpu", който да поддържа -mtune като gcc, както и подобрения на различните платформи.

Основни нови функции на LLVM 12.0

В тази нова версия можем да го намерим поддръжка за набора от инструменти за изграждане на llvm написано на python е прекратено, вместо това проектът е преминал изцяло към използването на системата за изграждане CMake.

Бекендът за архитектурата AArch64 има подобрена поддръжка за платформата Windows: осигурено е правилното генериране на изход на асемблер за целевите системи на Windows, оптимизирано е генерирането на данни при размотаване на повиквания (размерът на тези данни е намален с 60%), добавена е способността за създаване на данни за отвиване с помощта на seh директиви.

докато Вътрешната архитектура на PowerPC включва нови оптимизации за вградени и циклични разполагания, подобрена поддръжка за процесори Power10, допълнителна поддръжка за MMA инструкции за манипулиране на масиви и подобрена поддръжка за операционната система AIX.

за x86 добави поддръжка за процесори AMD Zen 3, Intel Alder Lake и Intel Sapphire Rapids, както и инструкции за процесори HRESET, UINTR и AVXVNNI. Премахната поддръжка за разширения MPX (разширения за защита на паметта) за проверка на указателите срещу ограниченията на областта на паметта (тази технология не е широко използвана и оттогава е премахната от GCC и clang). Асемблерът е добавил поддръжка за префиксите {disp32} и {disp8} и суфиксите .d32 и .d8, за да контролира размера на отместването на операндите и преходите. Добавен е нов атрибут "tune-cpu", който контролира активирането на микроархитектурните оптимизации.

Друга промяна, която се откроява, е тази добавен е нов режим "-fsanitize = unsigned-shift-base" за откриване на неподписани целочислени препълвания след малко преместване наляво. За формата Mach-O (macOS) е реализирана поддръжка за архитектури arm64, arm и i386, оптимизация на етапа на връзката (LTO) и отвиване на стека при обработка на изключения.

също се откроява нов атрибут на функцията "tune-cpu" което позволява ооптимизирането на микроархитектура се прилага независимо от атрибута "target-cpu" или CPU TargetMachine, който ще се използва за избор на набор от инструкции. Ако атрибутът не присъства, настройващият процесор ще следва целевия процесор.

Libc ++ внедрява нови функции на стандарта C ++ 20 и започна да разработва функции на спецификацията C ++ 2b плюс добавена поддръжка за сглобяване с деактивиране на поддръжка за локализация ("-DLIBCXX_ENABLE_LOCALIZATION = OFF") и устройства за генериране на псевдослучайни числа.

докато от подобренията за Clang 12, за архитектурата AArch64 са добавени нови флагове на компилатора "-Moutline-atomics" и "-mno-outline-atomics" за активиране и деактивиране на атомни помощни функции като "__aarch64_cas8_relax". Тези функции по време на изпълнение определят дали има поддръжка за големи системни разширения (LSE) и използват предоставените инструкции за атомен процесор или връщане назад, за да използват инструкции LL / SC (Load-link / store-conditional) за синхронизация.

Указателят 'this' вече се обработва с ненулеви и неразрешаващи се проверки (Н). Опцията "-fdelete-null-pointer-checks" може да се използва за премахване на ненулевия атрибут, когато се изискват нулеви стойности.

В Linux за архитектурите AArch64 и PowerPC, "-fasynchronous -wind-table" е разрешено да генерира таблици на поименни повиквания, както в GCC.

В "#pragma clang loop vectorize_width" беше добавена възможността за определяне на "фиксирани" (по подразбиране) и "мащабируеми" опции за избор на метод на векторизация.

В сървъра за кеширане на clangd (Clang Server) на Linux, консумацията на памет по време на дългосрочна работа е значително намалена (осигурява се периодично извикване на malloc_trim за връщане на свободни страници памет в операционната система).

Накрая ако се интересувате да научите повече за това за тази нова версия, можете Моля, обърнете се към подробностите по-долу. връзка.


Оставете вашия коментар

Вашият имейл адрес няма да бъде публикуван. Задължителните полета са отбелязани с *

*

*

  1. Отговорник за данните: AB Internet Networks 2008 SL
  2. Предназначение на данните: Контрол на СПАМ, управление на коментари.
  3. Легитимация: Вашето съгласие
  4. Съобщаване на данните: Данните няма да бъдат съобщени на трети страни, освен по законово задължение.
  5. Съхранение на данни: База данни, хоствана от Occentus Networks (ЕС)
  6. Права: По всяко време можете да ограничите, възстановите и изтриете информацията си.