The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]



Индекс форумов
Составление сообщения

Исходное сообщение
"Релиз набора компиляторов LLVM 3.9"
Отправлено opennews, 03-Сен-16 00:16 
После шести месяцев разработки подготовлен (http://lists.llvm.org/pipermail/llvm-announce/2016-September...) релиз проекта LLVM 3.9 (http://llvm.org/) (Low Level Virtual Machine) - GCC-совместимого инструментария (компиляторы, оптимизаторы и генераторы кода), компилирующего программы в промежуточный биткод RISC-подобных виртуальных инструкций (низкоуровневая виртуальная машина с многоуровневой системой оптимизации). Сгенерированный платформонезависимый псевдокод может быть преобразован при помощи JIT-компилятора в машинные инструкции непосредственно в момент выполнения программы.

В новом выпуске добавлен оптимизатор ThinLTO, обеспечена совместимость с ABI libstdc++ (GCC), реализована поддержка всех возможностей OpenCL 2.0 и возможностей OpenMP 4.5, не связанных с привлечением дополнительных аппаратных вычислительных устройств, добавлен инструмент clang-include-fixer, в компоновщике lld существенно улучшена поддержка ELF и добавлена начальная поддержка LTO-оптимизаций  LTO.


Улучшения (http://llvm.org/releases/3.9.0/tools/clang/docs/ReleaseNotes...) в Clang 3.9:

-  Расширены средства диагностики Clang, позволяющие выявлять больше проблем и более точно формулировать их суть. Добавлено новое предупреждение "-Wcomma", диагностирующее применение встроенного оператора ",", а также предупреждения "-Wfloat-overflow-conversion" и
"-Wfloat-zero-conversion" для выявления переполнения при преобразовании  числа с плавающей запятой в целое и преобразования ненулевого числа с плавающей запятой в нулевое целое значение;
-  Реализована полная поддержка всех возможностей стандарта OpenCL 2.0 (https://www.opennet.ru/opennews/art.shtml?num=38476), в том числе в новой версии появилась встроенная функция  Pipe, поддержка динамического параллелизма, добавлены функции преобразования адресного пространства to_{global/local/private}, поддержка атрибута nosvm и pragma opencl_unroll_hint. Также улучшены средства диагностики и генерации блоков Clang, используемых в коде ядра OpenCL;

-  Реализованы все возможности стандарта OpenMP 4.5 (https://www.opennet.ru/opennews/art.shtml?num=43412) (Open Multi-Processing), предоставляющего средства для применения методов параллельного программирования в программах на языках Си и Си++, за исключение средств для привлечения дополнительных аппаратных обработчиков (offloading). Значительно улучшено качество генерации конструкций  OpenMP, что позволило получать на выходе заметно более быстрый и стабильный код;

-  Добавлена поддержка фреймворка RenderScript (https://developer.android.com/guide/topics/renderscript/comp...) (включается опцией "-x renderscript" или при обработке файлов с расширением ".rs");
-  Расширена экспериментальная поддержка будущего стандарта C++1z, (-std=c++1z), например, добавлены атрибуты  [[fallthrough]], [[nodiscard]] и [[maybe_unused]], реализована возможность объединённой инициализации классов с базовыми классами;

-  В статический анализатор добавлена проверка некорректного использования MPI API в C и C++, добавлены проверки утечек памяти  и обращений к уже освобождённым блокам  на платформе Windows. В состав включена экспеиментальная реализация утилиты scan-build, переписанная на языке Python.
-  Добавлен новый интструмент  clang-include-fixer, позволяющий автоматически вставить недостающие директивы "#include";
-  В linter clang-tidy добавлена (http://llvm.org/releases/3.9.0/tools/clang/tools/extra/docs/...) большая порция новых проверок;


Основные новшества (http://llvm.org/releases/3.9.0/docs/ReleaseNotes.html) LLVM 3.9:

-  Компоновщик LLD доведён (http://llvm.org/releases/3.9.0/tools/lld/docs/ReleaseNotes.html) до рабочего состояния и теперь может связывать реальные приложения в формате ELF, включая сам LLVM и Clang, а также большинство приложений пространства пользователя FreeBSD. В LLD также добавлена поддержка оптимизации на этапе связывания (LTO) и объединение идентичных блоков кода. В дополнение к ранее поддерживаемым архитектурам x86, x86-64, MIPS, PowerPC и PPC64, добавлена поддержка ARM/Thumb, x32 ABI и MIPS N64 ABI;

-  Обеспечена совместимость с GCC ABI. Многие дистрибутивы Linux (Fedora, Debian, Ubuntu) перешли на использование нового GCC ABI для обхода несовместимостей с C++11  в libstdc++, что, в свою очередь, обернулось появлением несовместимостей (https://llvm.org/bugs/show_bug.cgi?id=23529) с другими компиляторами, в том числе с Clang. В LLVM 3.9 добавлены патчи для решения возникших проблем;


-  Добавлена поддержка ThinLTO (http://blog.llvm.org/2016/06/thinlto-scalable-and-incrementa...) для выполнения оптимизации на этапе связывания, который может быть активирован при компиляции и связывании с опцией "-flto=thin". При использовании ThinLTO LTO-оптимизация разделена на три части: генерация промежуточного кода на этапе компиляции, запуск плагина Thin в компоновщике для комбинирования суммарных данных и выполнения общего анализа, и запуск бэкенда ThinLTO для применения оптимизаций в параллельном режиме;

-  Внесены многочисленные улучшения в бэкенды для архитектур ARM, AArch64, MIPS и PowerPC. В том числе добавлена поддержка процессоров Qualcomm Kryo, Broadcom Vulcan и  Cortex-R8;

-  Для архитектуры x86  добавлена поддержка CPU Intel под кодовыми именами Skylake Server и Knights Landing, примечательных наличием инструкций AVX-512;

-  В бэкенд AMDGPU добавлена поддержка образов шейдеров OpenGL, хранилища буферов, атомарных счётчиков и вычислительных расширений шейдеров. Прекращена поддержка  Mesa 11.0.x (требуется Mesa 12 (https://www.opennet.ru/opennews/art.shtml?num=44757));

-  Прекращена поддержка сборочной системы autoconf в пользу CMake. Для сборки  LLVM  теперь требуется CMake 3.4.3 или более новая версия.

URL: http://lists.llvm.org/pipermail/llvm-announce/2016-September...
Новость: https://www.opennet.ru/opennews/art.shtml?num=45072

 

Ваше сообщение
Имя*:
EMail:
Для отправки ответов на email укажите знак ! перед адресом, например, !user@host.ru (!! - не показывать email).
Более тонкая настройка отправки ответов производится в профиле зарегистрированного участника форума.
Заголовок*:
Сообщение*:
 
При общении не допускается: неуважительное отношение к собеседнику, хамство, унизительное обращение, ненормативная лексика, переход на личности, агрессивное поведение, обесценивание собеседника, провоцирование флейма голословными и заведомо ложными заявлениями. Не отвечайте на сообщения, явно нарушающие правила - удаляются не только сами нарушения, но и все ответы на них. Лог модерирования.



Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру