Компилятор LLVM 3.4 был выпущен с обновленным интерфейсом компилятора Clang C / C ++ и новыми инструментами компилятора.
Проект LLVM — это набор модульных и многократно используемых технологий компиляторов и инструментальных цепочек. Он начал свою жизнь как исследовательский проект в Университете Иллинойса с целью предоставить современную стратегию компиляции на основе SSA, способную поддерживать как статическую, так и динамическую компиляцию произвольных языков программирования.
Проект Clang был создан для создания нового интерфейса C, C ++, Objective C и Objective C ++ для компилятора LLVM. Это «родной для LLVM» компилятор C / C ++ / Objective-C, который обеспечивает очень быструю компиляцию, примерно в три раза быстрее, чем GCC, при компиляции кода Objective-C в отладочной конфигурации.
Одним из основных улучшений LLVM 3.4 является включение по умолчанию серверной части LLVM графического процессора AMD R600. До сих пор это была «экспериментальная» функция, но новая версия выходит за рамки этого. Преимущество этого предложения заключается в том, что вы можете использовать его с графическим драйвером AMD Linux с открытым исходным кодом.
Другие улучшения включают новую утилиту Clang-Format, которую можно использовать для автоматического форматирования кода, более широкое использование векторизатора цикла на разных уровнях оптимизации и тот факт, что прямолинейный векторизатор SLP включен по умолчанию. Есть драйвер для Microsoft Visual Studio.
Добавлена поддержка архитектуры MIPS SIMD, а также экспериментальная поддержка SPARC V9. Несколько улучшений означают бэкэнд PowerPC с точки зрения качества генерации кода и времени компиляции. Бэкэнды X86, SPARC, ARM32, Aarch64 и SystemZ были улучшены.
Согласно примечаниям к выпуску Clang 3.4, основные улучшения в реализации Clang начинаются с улучшений в диагностике Clang, чтобы выявлять больше проблем, объяснять их более четко и предоставлять более точную информацию о них.
В поддержку языка C в Clang добавлены новые встроенные проверенные арифметические функции для критически важных с точки зрения безопасности приложений. Изменения в C ++ включают поддержку проекта рекомендаций по макросам тестирования функций ИК10 ISO WG21 28 августа 2013 года. Их цель — предоставить переносимый метод определения поддержки компилятором языковых функций, во многом как макрос __has_feature в Clang.
Одним из основных улучшений является поддержка всех функций в текущем рабочем проекте стандарта C ++ 1y. Когда он будет завершен, он станет новым стандартом C ++. Начиная с Clang 3.3 была добавлена поддержка следующих основных новых функций:
Общие лямбда-выражения и инициализированные лямбда-захваты
Типы возвращаемых значений выведенных функций (auto f () {return 0;})
Обобщенная поддержка constexpr (переменные мутации и циклы)
Шаблоны переменных и шаблоны статических элементов данных.
Использование ‘в качестве разделителя цифр в числовых литералах.
Clang-cl также добавил новый экспериментальный режим драйвера, который разработан для совместимости с компилятором Visual Studio, cl.exe. Этот режим драйвера заставляет Clang принимать те же параметры командной строки, что и cl.exe. Установщик попытается предоставить clang-cl во всех установках Visual Studio в системе как набор инструментов платформы, например «LLVM-vs2012».