LLVM 12.0 уже выпущен и это его новости

LLVM

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

В этой новой версии мы можем найти различные улучшения и новости, из которых мы можем выделить новый атрибут функции "tune-cpu" для поддержки -mtune как gcc, а также улучшения для различных платформ.

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

В этой новой версии мы можем обнаружить, что поддержка инструментария сборки llvm-build написано на питоне было прекращено, вместо этого проект полностью перешел на использование системы сборки CMake.

Бэкэнд для архитектуры AArch64 улучшил поддержку платформы Windows: для целевых систем Windows предусмотрена правильная генерация вывода ассемблера, оптимизирована генерация данных при вызовах очистки (размер таких данных уменьшен на 60%), добавлена ​​возможность создания данных размотки с помощью директив seh.

В то время как Серверная часть архитектуры PowerPC включает новые оптимизации для встроенных и циклических развертываний., улучшения в поддержке процессоров Power10, дополнительная поддержка инструкций MMA для управления массивами и улучшенная поддержка операционной системы AIX.

к x86 добавлена ​​поддержка процессоров AMD Zen 3, Intel Alder Lake и Intel Sapphire Rapids, а также инструкции для процессоров HRESET, UINTR и AVXVNNI. Удалена поддержка расширений MPX (расширений защиты памяти) для проверки указателей на соответствие ограничениям области памяти (эта технология не получила широкого распространения и уже удалена из GCC и clang). Ассемблер добавил поддержку префиксов {disp32} и {disp8} и суффиксов .d32 и .d8 для управления размером смещения операндов и переходов. Был добавлен новый атрибут «tune-cpu» для управления включением оптимизации микроархитектуры.

Еще одно важное изменение: добавлен новый режим "-fsanitize = unsigned-shift-base" для обнаружения переполнения беззнакового целого числа после сдвига бита влево. Для формата Mach-O (macOS) реализована поддержка архитектур arm64, arm и i386, оптимизации этапа связи (LTO) и раскрутки стека при обработке исключений.

также выделен новый атрибут функции "tune-cpu" что позволяетОптимизация микроархитектуры применяется независимо от атрибута target-cpu или от ЦП TargetMachine, который будет использоваться для выбора набора команд. Если атрибут отсутствует, настраивающий ЦП будет следовать за целевым ЦП.

Libc ++ реализует новые возможности стандарта C ++ 20. и приступил к разработке функций спецификации C ++ 2b, а также добавлена ​​поддержка сборки с отключением поддержки локализации ("-DLIBCXX_ENABLE_LOCALIZATION = OFF") и устройства для генерации псевдослучайных чисел.

В то время как из улучшений для Clang 12, для архитектуры AArch64 добавлены новые флаги компилятора «-Moutline-atomics» и «-mno-outline-atomics» для включения и отключения атомарных вспомогательных функций, таких как «__aarch64_cas8_relax». Эти функции времени выполнения определяют, есть ли поддержка для больших системных расширений (LSE), и используют предоставленные инструкции атомарного процессора или откат для использования инструкций LL / SC (Load-link / store-conditional) для синхронизации.

Указатель this теперь обрабатывается ненулевыми и разыменяемыми проверками. (N). Параметр «-fdelete-null-pointer-tests» может использоваться для удаления ненулевого атрибута, когда требуются нулевые значения.

В Linux для архитектур AArch64 и PowerPC включена функция «-fasynchronous -wind-tables» для создания таблиц переклички, как в GCC.

В «#pragma clang loop vectorize_width» была добавлена ​​возможность указывать «фиксированный» (по умолчанию) и «масштабируемый» параметры для выбора метода векторизации.

В кэширующем сервере clangd (Clang Server) в Linux потребление памяти во время длительной работы значительно снижено (предусмотрен периодический вызов malloc_trim для возврата свободных страниц памяти в операционную систему).

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


Содержание статьи соответствует нашим принципам редакционная этика. Чтобы сообщить об ошибке, нажмите здесь.

Будьте первым, чтобы комментировать

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

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

*

*

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