The OpenNET Project / Index page

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



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

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

Из новых возможностей LLVM 7.0 отмечается возможность мультиверсионирования функций в Clang, улучшение поддержки предкомпилированных заголовков PCH (https://en.wikipedia.org/wiki/Precompiled_header) в clang-cl, предварительная поддержка формата отладочной информации DWARF v5, начальная поддержка NVIDIA PTX для ускорения вычислений в OpenMP 4.5, поддержка OpenCL C++, поддержка MSan, X-Ray и libFuzzer во FreeBSD, начальная поддержка  UBSan, X-Ray и libFuzzer в OpenBSD,  реализация проверки неявных преобразований в UBSan, решение многих проблем с совместимостью в компоновщике lld, новые инструменты llvm-exegesis, llvm-mca и diagtool, дополнительные оптимизации и средства диагностики.

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


-  В UBSan (Undefined Behavior Sanitizer), детекторе неопределенного поведения (http://ru.wikipedia.org/wiki/%D0%9D%D0%B... добавлен режим проверки неявных преобразований ("-fsanitize=implicit-conversion"), который пока ограничен выявлением неявных усечений целых значений;

-  Доступна экспериментальная поддержка отладочной информации в формате DWARF v5 (включается "-gdwarf-5 -O0"), в том числе новых таблиц ".debug_names";

-  Добавлена поддержка мультиверсионирования функций, техники для включения в результирующий исполняемый файл нескольких реализаций функции, использующих разные специализированные расширенные наборы инструкций. Разные варианты функций определяются при помощи атрибута "target (http://releases.llvm.org/7.0.0/tools/clang/docs/AttributeRef... реализация которого совместима с GCC. Например, выражение  '__attribute__((target("arch=atom")))' позволяет определить отдельный вариант функции, который будет использован на процессорах Atom. Мультиверсионирование пока доступно только для исполняемых файлов ELF и для архитектур x86 и x86-64;


-  В clang-cl, альтернативном интерфейсе командной строки, обеспечивающем совместимость на уровне опций с компилятором cl.exe из состава Visual Studio,  значительно улучшена поддержка предкомпилированных заголовочных файлов в формате PCH. При использовании файла PCH теперь не генерируются inline-методы, которые уже присутствуют в объектах, собранных вместе с PCH-файлом, что позволяет ускорить сборку с применением PCH примерно на 30%. Также добавлена возможность использования предкомпилированных заголовков для
заголовочного файла stdafx.h, предлагаемого по умолчанию в Visual Studio;

-  Исполняемый файл компилятора и библиотеки теперь включают только номер значительной версии, т.е. вместо исполняемого файла clang-7.0 предлагается clang-7;
-  В состав включена вспомогательная утилита diagtool для манипуляции со средствами диагностики clang, например, для  определения иерархии предупреждений и оценки какие из элементов этой иерархии включены по умолчанию или применяются для конкретного вызова компилятора;

-  Добавлены новые диагностические опции "-Wc++98-compat-extra-semi", "-Wextra-semi", "-Wself-assign" и "-Wself-assign-field";

-  Добавлены новые флаги компилятора: "-fstrict-float-cast-overflow" и  "-fno-strict-float-cast-overflow" для управления поведением при преобразовании вещественного значения в целое; "-fforce-emit-vtables"  и "-fno-force-emit-vtables" для включения/выключения обязательного inline-развёртывания функций с использованием vtables; "-mcrc" и "-mno-crc" для управления применением  MIPS инструкций CRC (Cyclic Redundancy Check); "-mvirt" и "-mno-virt" для управления применением  MIPS-расширений виртуализации; "-mginv" и "-mno-ginv" для для управления применением  MIPS инструкций  GINV (Global INValidate);

-  Расширены возможности, связанные с поддержкой OpenCL, OpenMP и CUDA. В  том числе в OpenCL реализовано расширение cles_khr_int64 и добавлена опция "-cl-uniform-work-group-size" для применения дополнительной оптимизации на этапе компиляции. Началась реализация поддержки OpenCL C++, добавлены флаги "-std/-cl-std=c++" и поддержка ключевых слов. Добавлена возможность использования OpenMP 4.5 для ускорения вычислений за счёт выноса операций (offloading) на чипы с поддержкой псевдоязыка  NVIDIA PTX (http://en.wikipedia.org/wiki/Parallel_Thread_Execution) (Parallel Thread Execution);

-  В статический анализатор добавлен новый режим проверки MmapWriteExec  для определения попыток маппинга страниц памяти одновременно для записи и исполнения;
-  В linter clang-tidy добавлена (http://releases.llvm.org/7.0.0/tools/clang/tools/extra/docs/... большая порция новых проверок. Добавлена возможность сохранения результатов в формате  JSON для интеграции с внешними системами анализа кода. В состав включены новые модули abseil (для проверки библиотеки Abseil), portability и zircon (для проверки ядра ОС Fuchsia).

Основные новшества LLVM 7.0:


-  В компоновщике LLD обеспечена готовая для повсеместного использования поддержка форматов  ELF (Unix), COFF (Windows) и MinGW.  
Например,  lld/ELF пригоден для компоновки всех компонентов FreeBSD для архитектур AMD64 и ARMv7, и будет применяться в качестве компоновщика по умолчанию в следующей версии FreeBSD. lld/COFF уже применяется для формирования официальных сборок Chrome и Firefox.
Форматы Mach-O (macOS) и WebAssembly пока остаются в категории экспериментальных;


-  В UBsan, инструментарии X-Ray и библиотеке libFuzzer реализована начальная поддержка OpenBSD (x86 и x86_64);
-  В MSan (x86_64), инструментарии X-Ray и libFuzzer (x86 и x86_64) обеспечена поддержка FreeBSD;

-  Из установочного пакета для  Windows исключены компоненты для интеграции с Visual Studio, которые вынесены в отдельное расширение "LLVM Compiler Toolchain Visual Studio", размещённое в каталоге приложений Visual Studio Marketplace;

-  Добавлена новая утилита  llvm-exegesis (http://releases.llvm.org/7.0.0/docs/CommandGuide/llvm-exeges... для автоматического измерения производительности выполнения машинных инструкций;
-  Добавлена новая утилита llvm-mca (http://releases.llvm.org/7.0.0/docs/CommandGuide/llvm-mca.html) для прогнозирования производительности машинного кода для указанного CPU;

-  Проведена оптимизация преобразования вещественных чисел в значения других типов;

-  Реализована возможность профилирования кода,  оптимизированного при помощи JIT, при помощи утилиты perf;
-  Внесены многочисленные улучшения в бэкенды для архитектур X86, AArch64, ARM, SystemZ, Hexagon, MIPS и PowerPC.

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

 

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



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

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