EMZETT.
Увійти

LLVM

Коротко: LLVM — конструктор для компіляторів: багато мов перекладаються в те саме проміжне подання, а LLVM оптимізує його й створює машинний код для багатьох процесорів.

Докладніше: Замість того щоб будувати повний компілятор для кожної мови й процесора, передня частина (мова) і задня частина (процесор) розділені спільним LLVM IR.

Подробиці

  • Структура: Фронтенд (наприклад, Clang для C/C++, rustc для Rust, Swift) → LLVM IR → проходи оптимізації → бекенд (x86, ARM, RISC-V, WebAssembly, GPU).
  • IR: Типізована проста проміжна мова у формі SSA (кожній змінній значення присвоюється один раз), що полегшує оптимізацію.
  • Оптимізації: Вбудовування (inlining), оптимізація циклів, векторизація (SIMD), згортання констант.
  • Побічні продукти: Clang-Tidy, санітайзери (AddressSanitizer), налагоджувач LLDB.
  • Перевага: Нові мови з’являються швидше, нові процесори одразу отримують багато мов.
  • Перспектива: Альтернативи на кшталт GCC лишаються важливими, а деякі мови використовують власні бекенди (Go).

Див. також: проміжне подання та оптимізація компілятора