LLVM 13.0 поставляется с улучшениями поддержки и многим другим

LLVM

После шести месяцев разработки только что презентован запуск новой версии проекта «LLVM 13.0» Совместимость с GCC (компиляторы, оптимизаторы и генераторы кода), которая компилирует программы в промежуточный битовый код виртуальных инструкций, подобных RISC (низкоуровневая виртуальная машина с многоуровневой системой оптимизации).

В этой новой версии были добавлены различные изменения и новшества, из которых выделены улучшения поддержки а также реализация новых возможностей C ++ 20 и C ++ 2b среди прочего.

Основные новые возможности LLVM 13.0

В этой новой версии мы можем найти, что sи добавлена ​​опция "-ehcontguard" для использования технологии CET (Windows Control-flow Enforcement Technology) для защиты на этапе обработки исключений при выполнении эксплойтов, созданных с использованием методов Return-Oriented Programming (ROP).

Кроме того, иПроект debuginfo-test переименован в cross-project-tests и он предназначен для тестирования компонентов из нескольких проектов, не ограничиваясь отладочной информацией, а система сборки обеспечивает поддержку для создания нескольких дистрибутивов, например, один с утилитами, а другой с библиотеками разработчика.

Более того Libc ++ продолжает реализовывать новые функции стандартов C ++ 20 и C ++ 2b., в том числе пополнение библиотеки «концепций», а также добавлена ​​поддержка файловой системы std: для Windows на базе MinGW, также отдельные файлы заголовков , а также и опция сборки LIBCXX_ENABLE_INCOMPLETE_FEATURES была добавлена ​​для отключения файлов заголовков с не полностью реализованной функциональностью.

В то время как бэкэнд для архитектуры AArch64 поддерживает расширения Armv9-A RME (Realm Management Extension) и SME (Scalable Matrix Extension) на ассемблере, Добавлена ​​поддержка ISA V68 / HVX. к бэкэнду архитектуры Hexagon и бэкэнду x86 улучшена совместимость с процессорами AMD Zen 3 и добавлена ​​поддержка APU GFX1013 RDNA2 в бэкэнд AMDGPU.

Возможности компоновщика LLD, который реализует поддержку процессоров Aarch64 с прямым порядком байтов, также были расширены, а серверная часть Mach-O переведена в состояние, позволяющее связывать обычные программы. Он включает необходимые улучшения для связывания Glibc с помощью LLD.

Утилита llvm-mca (анализатор машинного кода) добавляет поддержку упорядоченных суперскалярных конвейерных процессоров, таких как ARM Cortex-A55.

Отладчик LLDB для платформы AArch64 обеспечивает полную поддержку аутентификации указателя, MTE (MemTag, расширение тегов памяти) и регистры SVE, а также были добавлены команды, которые позволяют связывать теги с каждой операцией выделения памяти и организовывать при доступе к памяти проверку правильности указателя, который должен быть связан с тегом.
Отладчик LLDB и интерфейс Fortran - Flang были добавлены к бинарным сборкам, созданным проектом.

Что же касается Clang 13.0 подчеркивает улучшения:

  • Реализована поддержка гарантированных вызовов очереди (вызов подпрограммы в конце функции, которая формирует рекурсию очереди, если подпрограмма вызывает сама себя).
  • Добавлены флаги «-Wunused-but-set-parameter» и «-Wunused-but-set-variable» для отображения предупреждения, если параметр или переменная установлена, но не используется.
  • Добавлен флаг «-Wnull-pointer-subtraction» для отображения предупреждения, если код может привести к неопределенному поведению из-за использования нулевого указателя в операциях вычитания.
  • Добавлен флаг «-fstack-use» для создания для каждого файла кода дополнительного файла «.su», который содержит информацию о размере фреймов стека для каждой функции, определенной в обработанном файле.
  • В статический синтаксический анализатор был добавлен новый тип вывода, «sarif-html», который позволяет одновременно генерировать отчеты в форматах HTML и Sarif.
  • Добавлена ​​новая проверка для allocClassWithName. Когда указана опция «-analyzer-display-progress», отображается время синтаксического анализа для каждой функции. Парсер умного указателя (alpha.cplusplus.SmartPtr) почти готов.
  • Реализована поддержка директив преобразования цикла («#pragma omp unrol» и «#pragma omp tile»), определенных в спецификации OpenMP 5.1.
  • Большая часть новых проверок была добавлена ​​в linter clang-tidy.

В конце концов Если вам интересно узнать об этом больше, вы можете проверить детали По следующей ссылке.


Оставьте свой комментарий

Ваш электронный адрес не будет опубликован. Обязательные для заполнения поля помечены *

*

*

  1. Ответственный за данные: AB Internet Networks 2008 SL
  2. Назначение данных: контроль спама, управление комментариями.
  3. Легитимация: ваше согласие
  4. Передача данных: данные не будут переданы третьим лицам, кроме как по закону.
  5. Хранение данных: база данных, размещенная в Occentus Networks (ЕС)
  6. Права: в любое время вы можете ограничить, восстановить и удалить свою информацию.