Релиз LLVM 2.8
Спустя полгода активной разработки, аннонсирован выход версии 2.8 набора компиляторов LLVM , распространяемых по условиям BSD-подобной лицензии UIUC. Одновременно вышли и обновления подпроектов LLVM: компилятора C/C++ - Clang, модифицированной версии GCC 4.2.x (использует LLVM для генерации кода) - llvm-gcc , плагина для GCC 4.5 (и выше) - dragonegg.
Наиболее значимые изменения:
- в основной проект вошел отладчик LLDB
- другим дополнением проекта стала замена libstdc++ - совместимая с C++0x стандартом библиотека libc++
- LLVM Machine Code (MC) подсистема для поддержки ассемблирования, дизассемблирования и обработки бинарных форматов файлов. (подробности в блоге)
к сожалению вышеперечисленные новшества реализованы в LLVM 2.8 только для платформ MacOSX x86 и x86-64
- llvm-diff для семантического сравнивания .ll файлов.
в числе других изменений можно отметить:
- оптимизация внутренних функций работы с памятью
- более эффективная отладка, за счет генерации метаданных для отладчика в режиме реального времени
- более эффективная оптимизация циклов, вложенности функций (inlining), -loweratomic pass
- Clang теперь поддерживает ключи -momit-leaf-frame-pointer, -ffunction-sections, -fdata-sections
- Значительно улучшен аллокатор регистров (особенно для -O0), возможен выбор алллокатора (в зависимости от ключа -O) при использовании ключа -regalloc=default, также будет задействованы SSE регистры
- Множество процессор-специфичных оптимизаций для платформ ARM и x86 (SSE,AVX,NEON)
Просмотреть полный список изменений.
(также по ссылке доступен и список нерешенных проблем релиза)
Ознакомиться с материалами конференции разработчиков LLVM, прошедшей перед релизом
Скачать source-tarball's