Инструменты6 сентября 2026 г., 14:17 МСК🤖 Auto

LLVM: ClangIR станет сборкой по умолчанию, но не выполнением

Разработчики LLVM обсуждают включение ClangIR в базовую сборку. Это удвоит время компиляции самого Clang, но откроет путь для улучшенной оптимизации и поддержки GPU.

Баннер новости 6883

Суть предложения: сборка, а не использование

Разработчики LLVM инициировали дискуссию в LLVM Discourse и опубликовали RFC-запрос на включение ClangIR в конфигурацию сборки по умолчанию. Важно понимать: речь идет только о компиляции компонента ClangIR из исходных кодов LLVM, а не о его активном использовании в генерации кода. Для применения ClangIR разработчикам по-прежнему потребуется флаг -fclangir.

ClangIR — это новая промежуточная репрезентация (IR), построенная на базе MLIR. В отличие от традиционного LLVM IR, она находится на более высоком уровне абстракции, ближе к AST, что позволяет сохранять семантику C/C++ исходного кода.

Цена вопроса: время сборки и зависимости

Включение ClangIR в стандартную сборку влечет за собой существенные технические издержки. Главная проблема — MLIR становится обязательной зависимостью. Это приводит к значительному увеличению времени компиляции самого компилятора Clang. По оценкам участников сообщества, время сборки может увеличиться более чем в два раза.

Параметр Текущее состояние При включении ClangIR по умолчанию
Время сборки Clang Базовое Увеличение более чем в 2 раза
Зависимости Стандартный стек Обязательное наличие MLIR
CI/Тестирование Стандартное Удлинение циклов проверки
Поддержка Windows Полная Отсутствует целевая платформа (target)

Зачем это нужно: оптимизации и GPU

Несмотря на издержки, сторонники инициативы указывают на стратегические преимущества. ClangIR позволяет:

  • Генерировать более точные диагностические сообщения и ошибки.
  • Проводить более глубокий статический анализ кода.
  • Реализовывать оптимизации, недоступные при прямом снижении AST в LLVM IR.
  • Улучшить поддержку GPU и device offload: MLIR-базовая архитектура упрощает трансляцию кода в SPIR-V/Vulkan и другие многопроцессорные среды.

Статус обсуждения

На данный момент предложение находится на стадии обсуждения. Разработчики взвешивают компромисс между удобством поддержки кодовой базы (не нужно собирать ClangIR отдельно для тестов) и ресурсозатратностью сборки. Решение о финальном включении в mainline пока не принято.

Источник: Phoronix ↗