После шести месяцев разработки представлен запуск новой версии проекта 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 для возврата свободных страниц памяти в операционную систему).
В конце концов если вам интересно узнать об этом больше об этой новой версии вы можете Пожалуйста, обратитесь к деталям ниже. ссылка.
Будьте первым, чтобы комментировать