Hacker News Digest

30 августа 2025 г. в 06:55 • discourse.llvm.org • ⭐ 147 • 💬 56

OriginalHN

#llvm#clang#compilation#aarch64#x86-64#rust#ir#open-source

TPDE-LLVM: Faster LLVM -O0 Back-End

TPDE-LLVM: 10-20× быстрее -O0
Новый open-source бэкенд TPDE-LLVM ускоряет компиляцию в режиме -O0 в 10–20 раз при сопоставимой скорости выполнения и увеличении кода на 10–30 %. Поддерживаются x86-64 и AArch64, типичное IR Clang O0/O1.

SPEC 2017 (x86-64) Ускорение Размер
perl 11.4× 1.27×
gcc 12.5× 1.32×
mcf 9.7× 1.27×
omnetpp 21.5× 1.24×
xalanc 19.0× 1.24×
x264 10.5× 1.26×
deepsjeng 9.6× 1.25×
leela 21.4× 1.24×
xz 11.0× 1.30×
geomean 13.3× 1.27×

Как работает
Три прохода: очистка IR, анализ (циклы + живость), кодогенерация (lowering, регистры, код) за один проход. Подробности — в статье.

Планы

  • DWARF, улучшенный регистровый аллокатор.
  • Поддержка Flang/Rust неполная (векторы, FP-операции).
  • Нет non-ELF, других целей.

Использование
Библиотека, llc-подобный инструмент, патч для Clang.

Почему не ускорить LLVM?
LLVM 18→20 стал быстрее на 18 %, но 10× требует радикальных изменений.

Что мешает ещё быстрее

  • ConstantExpr внутри функций.
  • Структуры/массивы произвольного размера.
  • Прямой доступ к TLS-глобалам.
  • Арифметика произвольной битности (i260).

Факты

  • 4 байта padding в Instruction для служебных номеров.
  • PHINode::getIncomingValForBlock квадратичен при >1 k предков.
  • 90 % времени tpde-llc — парсинг биткода.