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. Права: в любое время вы можете ограничить, восстановить и удалить свою информацию.

bool (истина)