Вихід LLVM 22.1: важливі оновлення для OpenSource
Вихід LLVM 22.1: важливі оновлення для OpenSource проекту
Проект LLVM, відомий інфраструктурою компілятора з відкритим вихідним кодом, випустив LLVM 22.1. Це перша стабільна версія в серії 22.x після майже шести місяців наполегливої роботи.
Ключові зміни в LLVM IR
Оновлення пропонує кілька важливих змін в LLVM IR. Нова інструкція ptrtoaddr була переглянута, вона відокремлює витяг адреси від захоплення походження та обробки вирівнювання для маскованих пам’яткових інструкцій. Додаткові оновлення поліпшують обробку інструкцій switch та приєднання метаданих.
Вдосконалення інфраструктури та системи зборки
Оновлення інфраструктури і системи зборки включає вдосконалення для цілей AIX, розширену підтримку для CMake 4.0 та зміни значень за замовчуванням для спільних бібліотек. TableGen тепер використовує оновлені оператори, замінюючи застарілі. Векторизація робить крок вперед з початковою підтримкою копійованих елементів у SLP-векторизаторі та раннім виявленням шаблонів FMA і FMAD.
Нові можливості для AArch64 та RISC-V
AArch64 тепер підтримує розширення Armv9.7-A та нові цільові процесори. RISC-V вводить за замовчуванням обробку хвостів у векторизаторі циклів та ширшу підтримку розширень. LoongArch додає підтримку великої моделі коду та покращене оброблення перенесень.
Оновлення PowerPC та x86
PowerPC отримує кілька оновлень для прототипних інструкцій та уточнень ABI. На x86 доступні нові цільові процесори -mcpu, включаючи wildcatlake та novalake. Підтримка WebAssembly покращилась із м’яким обробленням half та перейменуванням цілі з wasm32-wasi на wasm32-wasip1.
Покращення в інструментах та налагоджувачах
В оновленнях інструментів llvm-config додає опцію --quote-paths. llc і opt тепер можуть зберігати статистику у файли. llvm-objdump розширює підтримку допомоги для процесорів та атрибутів. Підтримка Python 2.7 була ще більше видалена з llvm-lit.
Подальший розвиток LLDB для WebAssembly
LLDB розширює підтримку налагодження WebAssembly, включаючи обробку точок зупинки та інспекцію змінних для підтримуваних середовищ виконання. Новий плагін платформи Wasm дозволяє запускати бінарні файли WebAssembly безпосередньо під сумісними середовищами. На Windows, за замовчуванням читач PDB тепер використовує рідну реалізацію LLVM замість DIA.
Покращення Distributed ThinLTO та санітарів
Випуск просуває Distributed ThinLTO, додаючи підтримку кешу для інкрементальних зборок та поліпшуючи обробку об’єктів бітового коду у статичних архівах. Очищення тимчасових файлів тепер є більш надійним у ненормальних сценаріях завершення. Формати об’єктів ELF і COFF залишаються підтримуваними для DTLTO.
Нарешті, санітайзери тепер дозволяють TypeSanitizer працювати паралельно з UndefinedBehaviorSanitizer та пропонують нові контролі над обробкою інструментації. BOLT впроваджує підтримку легкого режиму на AArch64, зменшуючи розмір бінарника шляхом повторного використання холодного коду замість його дублювання.
Додаткову інформацію дивіться в випускних замітках або в оголошеннях проекту LLVM.




