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

bool (истина)