Релиз набора компиляторов LLVM 13.0
Автор
Сообщение
news_bot ®
Стаж: 6 лет 9 месяцев
Сообщений: 27286
После шести месяцев разработки представлен релиз проекта LLVM 13.0 - GCC-совместимого инструментария (компиляторы, оптимизаторы и генераторы кода), компилирующего программы в промежуточный биткод RISC-подобных виртуальных инструкций (низкоуровневая виртуальная машина с многоуровневой системой оптимизаций). Сгенерированный псевдокод может быть преобразован при помощи JIT-компилятора в машинные инструкции непосредственно в момент выполнения программы.
Улучшения в Clang 13.0:
- Реализована поддержка гарантированных хвостовых вызовов (вызов подпрограммы в самом конце функции, образующий хвостовую рекурсию в случае, если подпрограмма вызывается саму себя). Поддержка гарантированных хвостовых вызовов обеспечена при помощи атрибута "[[clang::musttail]]" в C++ и "__attribute__((musttail))" в C, применяемых в выражении "return". Возможность позволяет реализовать оптимизации через развёртывание кода в плоскую итерацию для экономии расходования стека.
- В декларациях "using" и расширениях clang реализована поддержка определения атрибутов в стиле C++11, используя формат "[[]]".
- Добавлен флаг "-Wreserved-identifier" для вывода предупреждения при указании в пользовательском коде зарезервированных идентификаторов.
- Добавлены флаги "-Wunused-but-set-parameter" и "-Wunused-but-set-variable" для вывода предупреждения, если параметр или переменная выставлены, но не используются.
- Добавлен флаг "-Wnull-pointer-subtraction" для вывода предупреждения, если в код может привести к неопределённому поведению из-за использования нулевого указателя в операциях вычитания.
- Добавлен флаг "-fstack-usage" для генерации для каждого файла с кодом дополнительного файла ".su", содержащего сведения о размере кадров стека для каждой функции, определённой в обрабатываемом файле.
- В статическом анализаторе добавлен новый тип вывода - "sarif-html", приводящий к формированию отчётов одновременно в форатмах HTML и Sarif. Добавлена новая проверка allocClassWithName. При указании опции "-analyzer-display-progress" обеспечен вывод времени анализа каждой функции. Почти доведён до готовности анализатор умных указателей (alpha.cplusplus.SmartPtr).
- Расширены возможности, связанные с поддержкой OpenCL. Добавлена поддержка новых расширений cl_khr_integer_dot_product,
cl_khr_extended_bit_ops, __cl_clang_bitfields и __cl_clang_non_portable_kernel_param_types. Продолжена реализация спецификации OpenCL 3.0. Для Си по умолчанию задействована спецификация OpenCL 1.2, если явно не выбрана другая версия. Для C++ добавлена поддержка файлов с расширением ".clcpp".
- Реализована поддержка директив трансформации циклов ("#pragma omp unrol" и "#pragma omp tile"), определённых в спецификации OpenMP 5.1.
- В утилиту clang-format добавлены опции: SpacesInLineCommentPrefix для определения числа пробелов перед комментариями, IndentAccessModifiers, LambdaBodyIndentation и PPIndentWidthдля управления выравниванием записей, лямбда-выражений и директив препроцессора. Расширены возможности сортировки перечисления заголовочных файлов (SortIncludes). Добавлена поддержка форматирования файлов JSON.
- В linter clang-tidy добавлена большая порция новых проверок.
Основные новшества LLVM 13.0:
- Добавлена опция "-ehcontguard" для использования технологии CET
(Windows Control-flow Enforcement Technology) для защиты на этапе обработки исключений от выполнения эксплоитов, построенных с использованием приёмов возвратно-ориентированного программирования (ROP, Return-Oriented Programming).
- Проект debuginfo-test переименован в cross-project-tests и рассчитан на тестирование компонентов из различных проектов, не ограничиваясь отладочной информацией.
- В сборочной системе обеспечена поддержка сборки нескольких дистрибутивов, например, один с утилитами, а второй с библиотеками для разработчиков.
- В бэкенде для архитектуры AArch64 в ассемблере реализована поддержка расширений Armv9-A RME (Realm Management Extension) и SME (Scalable Matrix Extension).
- В бэкенд для архитектуры Hexagon добавлена поддержка ISA V68/HVX.
- В бэкенде для архитектуры x86 улучшена поддержка процессоров AMD Zen 3.
- В бэкенд AMDGPU добавлена поддержка APU GFX1013 RDNA2.
- В Libc++ продолжена реализация новых возможностей стандартов C++20 и C++2b, в том числе завершена реализация библиотеки "concepts". Для платформы Windows на базе MinGW добавлена поддержка std::filesystem. Разделены заголовочные файлы <algorithm>, <iterator> и <utility>.
Добавлена сборочная опция LIBCXX_ENABLE_INCOMPLETE_FEATURES для отключения заголовочных файлов с не полностью реализованной функциональностью.
- Расширены возможности компоновщика LLD, в котором реализована поддержка Big-endian процессоров Aarch64, а бэкенд Mach-O доведён до состояния, позволяющего компоновать обычные программы. Включены улучшения, необходимые для компоновки Glibc с использованием LLD.
- В утилиту llvm-mca (Machine Code Analyzer) добавлена поддержка процессоров, выполняющих инструкции по порядку (in-order superscalar pipeline), таких как ARM Cortex-A55.
- В отладчике LLDB для платформы AArch64 реализована полная поддержка аутентификации указателей (Pointer Authentication), механизма MTE (MemTag, Memory Tagging Extension) и регистров SVE. Добавлены команды, позволяющие привязать теги к каждой операции выделения памяти и организовать при доступе к памяти проверку указателя, который должен быть связан с корректным тегом.
- В состав формируемых проектом бинарных сборок добавлены отладчик LLDB и фронтэнд для языка Fortran - Flang.
===========
Источник:
OpenNet.RU
===========
Похожие новости
- Главная ссылка к новости (https://llvm.org/...)
- OpenNews: Релиз набора компиляторов LLVM 12.0
- OpenNews: Проект LLVM представил HPVM 1.0, компилятор для CPU, GPU, FPGA и ускорителей
- OpenNews: Релиз набора компиляторов LLVM 11.0
- OpenNews: Разработчики LLVM обсуждают прекращение использования слова "master"
- OpenNews: Разработчики из Google предложили разработать свою libc для LLVM
Похожие новости:
- [Программирование, Компиляторы] Почему я прекратил разработку своего старого языка программирования и создал новый
- [Программирование, Компиляторы] Использование библиотеки LLVM для генерации кода регулярных выражений
- [*nix, Лайфхаки для гиков] Mein Konfig: экскурсия по dotfiles (часть 2)
- [*nix, Лайфхаки для гиков] Mein Konfig: экскурсия по dotfiles
- [C++, Системы сборки] PVS-Studio Team: Switching to Clang Improved PVS-Studio C++ Analyzer's Performance
- [C++, Системы сборки] Опыт команды PVS-Studio: повышение производительности C++ анализатора на Windows при переходе на Clang
- [Assembler, Компиляторы, C] On commutativity of addition
- Релиз набора компиляторов LLVM 12.0
- Проект LLVM представил HPVM 1.0, компилятор для CPU, GPU, FPGA и ускорителей
- [Высокая производительность, Компиляторы, Процессоры, Криптовалюты, Суперкомпьютеры] Мультиклеточная архитектура: тесты и развитие
Теги для поиска: #_llvm, #_clang
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете прикреплять файлы к сообщениям
Вы не можете скачивать файлы
Текущее время: 22-Ноя 02:43
Часовой пояс: UTC + 5
Автор | Сообщение |
---|---|
news_bot ®
Стаж: 6 лет 9 месяцев |
|
После шести месяцев разработки представлен релиз проекта LLVM 13.0 - GCC-совместимого инструментария (компиляторы, оптимизаторы и генераторы кода), компилирующего программы в промежуточный биткод RISC-подобных виртуальных инструкций (низкоуровневая виртуальная машина с многоуровневой системой оптимизаций). Сгенерированный псевдокод может быть преобразован при помощи JIT-компилятора в машинные инструкции непосредственно в момент выполнения программы. Улучшения в Clang 13.0:
=========== Источник: OpenNet.RU =========== Похожие новости
|
|
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете прикреплять файлы к сообщениям
Вы не можете скачивать файлы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете прикреплять файлы к сообщениям
Вы не можете скачивать файлы
Текущее время: 22-Ноя 02:43
Часовой пояс: UTC + 5