The OpenNET Project / Index page

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



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

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


LLVM 4.0 стал первым выпуском в рамках новой нумерации версий (https://www.opennet.ru/opennews/art.shtml?num=45690), в которой решено уйти от разделения значительных и функциональных выпусков. Отныне в каждом функциональном обновлении будет меняться первая цифра (в сентябре состоится релиз LLVM 5.0.0, весной следующего года  6.0.0 и т.д.). Для обеспечения совместимости с существующими системами разбора номеров версий LLVM корректирующие обновления, как и раньше будут приводить к увеличению третьей цифры (4.0.1, 4.0.2, 4.0.3).


Из новых возможностей LLVM 4.0 отмечается  использование статистики выполнения в оптимизаторе ThinLTO, более агрессивное устранение  бесполезного кода, экспериментальная поддержка сопрограмм, экспериментальная поддержка целевой платформы AVR, улучшение совместимости с GNU ld и значиетельное увеличение производительности компоновщика LLD.

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

-  Добавлен атрибут diagnose-if (http://releases.llvm.org/4.0.0/tools/clang/docs/AttributeRef... позволяющем выводить предупреждения или ошибки, если вызов функции соответствует одному или нескольким условиям, определённым пользователем. Например:


    void abs(int a)
       __attribute__((diagnose_if(a >= 0, "Redundant abs call", "warning")));

-  Расширены средства девиртуализации (https://ru.wikipedia.org/wiki/%D0%A2%D0%... (замена непрямых вызовов на условное выполнение развёрнутых inline-блоков) при помощи новой опции "-fstrict-vtable-pointers (http://releases.llvm.org/4.0.0/tools/clang/docs/UsersManual....

-  В оптимизатор ThinLTO (http://blog.llvm.org/2016/06/thinlto-scalable-and-incrementa... ("-flto=thin"), работающий на этапе связывания, добавлена поддержка учёта данных профилирования (PGO (https://ru.wikipedia.org/wiki/Profile-guided_optimization), Profile-guided optimization), накопленных в процессе выполнения программы, для более точного принятия решений об импортировании функций и продвижения косвенных вызовов между различными модулями. При включении отладочного режима (-g) существенно сокращено время сборки и уменьшен размер исполняемого файла;

-  Представлен новый флаг компиляции "-Og", позволяющий выполнить оптимизацию с сохранением удобства отладки (в текущей версии опция аналогична применению режима "-O1";
-  Добавлена опция "-MJ" для вывода БД компиляции в формате JSON для интеграции с существующими системами сборки;

-  Устранена порция ошибок в реализации OpenCL и добавлено новое OpenCL-расширение cl_khr_mipmap_image. Добавлен флаг "-cl-ext" для переопределения списка расширений, компилируемых для выбранной целевой платформы. Добавлены pragma OPENCL EXTENSION the_new_extension_name : begin/end для добавления собственных расширений OpenCL без правки кола Clang. В документацию Clang включено руководство (http://releases.llvm.org/4.0.0/tools/clang/docs/UsersManual.... по OpenCL;

-  В статическом анализаторе улучшена поддержка кода, использующего gtest. Добавлена опция "--show-description" для вывода описаний дефектов в списке scan-build. Добавлены новые проверки: предупреждение при  виртуальных вызовах из конструкторов и деструкторов, проверка синхронизированных копий свойств mutable-типов в  Objective C, таких как NSMutableArray, проверка нежелательных сравнений NSNumber, CFNumberRef и других числовых объектов Cocoa со скалярными значениями;

-  В linter clang-tidy добавлена (http://releases.llvm.org/4.0.0/tools/clang/tools/extra/docs/... большая порция новых проверок. В include-fixer обеспечена интеграция с     Emacs;

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


-  Добавлена экспериментальная поддержка сопрограмм (http://releases.llvm.org/4.0.0/docs/Coroutines.html), активируемая при указании опции "-enable-coroutines" или через API addCoroutinePassesToExtensionPoints;

-  Повышены требования к минимальным версиям компиляторов. Для сборки LLVM теперь необходимы как минимум GCC 4.8 и Visual Studio 2015;

-  Обеспечена обработка invariant.group для различных базовых блоков, что сделало возможным выполнение девиртуализации виртуальных вызовов внутри циклов;

-  В фазе агрессивного удаления мёртвого кода (https://ru.wikipedia.org/wiki/%D0%9C%D1%... (adce) реализовано удаление веток, не влияющих на поведение программы. Циклы оставляются по умолчанию, но они могут быть удалены при явном указании опции "-adce-remove-loops", если тело цикла не включает значимых операций.
-  В утилиту llvm-cov добавлена возможность экспорта  coverage-статистики в формате JSON. Кроме того, также улучшен вывод в формате HTML;

URL: http://lists.llvm.org/pipermail/llvm-announce/2017-March/000...
Новость: http://www.opennet.ru/opennews/art.shtml?num=46181

 

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



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

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