LLVM 12.0 вже випущений, і це його новини

LLVM

Через півроку розробки був представлений запуск нової версії проекту LLVM 12.0 Сумісний з GCC (компілятори, оптимізатори та генератори коду), який компілює програми у проміжний біт-код віртуальних інструкцій, подібних до RISC (віртуальна машина низького рівня з багаторівневою системою оптимізації).

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

Основні нові можливості LLVM 12.0

У цій новій версії ми можемо це знайти підтримка набору інструментів збірки llvm-build написаний на пітоні припинено, замість чого проект повністю перейшов на використання системи збірки 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" або ЦП TargetMachine, який буде використовуватися для вибору набору інструкцій. Якщо атрибут відсутній, налаштування ЦП буде слідувати цільовому ЦП.

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

в той час як з удосконалень для Clang 12 для архітектури AArch64 були додані нові прапори компілятора "-Moutline-atomics" та "-mno-outline-atomics", щоб увімкнути та вимкнути атомарні допоміжні функції, такі як "__aarch64_cas8_relax". Ці функції виконання визначають, чи є підтримка Large System Extensions (LSE), і використовують надані інструкції атомного процесора або відкат, щоб використовувати інструкції LL / SC (Load-link / store-conditional) для синхронізації.

Вказівник 'this' тепер обробляється ненульовими і неможливими для перевірки перевірками (N). Параметр "-fdelete-null-pointer-checks" може бути використаний для видалення ненульового атрибута, коли потрібні нульові значення.

У Linux для архітектур AArch64 та PowerPC "-fasynchronous -wind-tables" дозволено генерувати таблиці поіменних викликів, як у 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. Права: Ви можете будь-коли обмежити, відновити та видалити свою інформацію.