Скрыть
Новая версия набора компиляторов LLVM 3.4
Увидел свет релиз проекта LLVM 3.4 (Low Level Virtual Machine) - GCC совместимого инструментария (компиляторы, оптимизаторы и генераторы кода), компилирующего программы в промежуточный биткод RISC подобных виртуальных инструкций (низкоуровневая виртуальная машина с многоуровневой системой оптимизации). Сгенерированный платформонезависимый псевдокод может быть преобразован при помощи JIT-компилятора в машинные инструкции непосредственно в момент выполнения программы.
Основные новшества LLVM 3.4:
- Существенно увеличена производительность генератора кода. При использовании флагов оптимизации "-Os" и "-O2" по умолчанию включена поддержка автоматической векторизации циклов, ранее применяемой только при указании флага "-O3". Также включен по умолчанию представленный в прошлом выпуске новый SLP-векторизатор.
- Сборка по умолчанию бэкэнда для использования в качестве целевой платформы GPU семейства R600 (HD2XXX - HD7XXX). Бэкэнд необходим для компилятора шейдеров LLVM, который в свою очередь требуется для открытой реализации стандарта OpenCL;
- В llvm-ar задействована новая библиотека объектов и обеспечена генерация архивов и таблиц символов в формате GNU;
- Значительно расширены биндинги для языка OCaml, которые теперь охватывают возможности всех библиотек LLVM;
- Внесены заметные изменения в бэкенд для процессоров PowerPC, положительно повлиявшие на качество кода и скорость сборки;
- В бэкенд MIPS добавлена поддержка архитектуры MSA (MIPS SIMD Architecture);
- Добавлен экспериментальный бэкенд для архитектуры SPARC V9;
- В бэкенд для архитектуры SPARC добавлена поддержка JIT, fp128, обработки исключений и TLS (Thread-Local Storage);
- Расширены возможности бэкендов X86, ARM32, Aarch64 и SystemZ;
- LLVM 3.4 является последним выпуском, который может быть собран компилятором с поддержкой стандарта C++'98, для сборки следующих версий потребуется компилятор, совместимый с C++'11.
Улучшения в Clang: - Обеспечена полная поддержка всех возможностей текущего чернового варианта будущего стандарта C++1y;
- В Clang Static Analyzer существенно улучшена поддержка C++, сокращено число ложных срабатываний и расширено число выявляемых ошибок;
- В состав включена новая утилита "clang-format", которую можно использовать для автоматического форматирования кода в текстовых редакторах или интегрированных средах разработки, на основе заданного набора правил стилевого оформления кода;
- Добавлен драйвер с экспериментальным альтернативным интерфейсом командной строки, обеспечивающим совместимость на уровне опций с компилятором cl.exe из состава Visual Studio. Драйвер может применяться для упрощения миграции проектов на Clang без переработки сборочных сценариев;
- При использовании флага "-O4" теперь не включается оптимизации на стадии компоновки (link-time optimization), для которой следует явно указать флаг "-flto", применяемый при любом уровне оптимизации.
Также версия 3.4 дала старт новым субпроектам, о которых можно прочесть в оригинальной статье.
Качнуть сорса>>>
Подробнее