LLVM 12.0已經發布,這是其新聞

LLVM

經過六個月的發展 介紹了新版本的LLVM 12.0項目的啟動 符合GCC(編譯器,優化器和代碼生成器)的要求,可以將程序編譯為類似於RISC(具有多級優化系統的低級虛擬機)的虛擬指令的中間位代碼。

在這個新版本中 我們可以找到各種改進和新聞,我們可以突出顯示一個新的函數屬性“ tune-cpu”以支持-mtune as gcc,以及對不同平台的改進。

LLVM 12.0的主要新功能

在這個新版本中,我們可以找到 支持llvm-build構建工具包 用python編寫 已經停產了, 而不是將項目完全轉換為使用CMake構建系統。

AArch64體系結構的後端改進了對Windows平台的支持: 為目標Windows系統提供了正確的彙編程序輸出生成,優化了unwind調用中的數據生成(此類數據的大小減少了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”突出顯示 允許o無論“ target-cpu”屬性如何,都將應用微體系結構優化 或從TargetMachine CPU中用於選擇指令集。 如果該屬性不存在,則調整CPU將跟隨目標CPU。

Libc ++實現了C ++ 20標準的新功能 並開始開發C ++ 2b規範的功能,以及 添加了對組裝的支持,並禁用了對本地化的支持 (“ -DLIBCXX_ENABLE_LOCALIZATION = OFF”)和用於生成偽隨機數的設備。

Clang 12的改進,針對AArch64架構的改進中,添加了新的編譯器標誌 “ -Moutline-atomics”和“ -mno-outline-atomics”以啟用和禁用原子助手功能,例如“ __aarch64_cas8_relax”。 這些運行時函數確定是否支持大型系統擴展(LSE),並使用提供的原子處理器指令或回滾來使用LL / SC(裝入鏈接/存儲條件的)指令進行同步。

現在使用非空和可解除引用的檢查處理“ this”指針 (N)。 當需要空值時,可以使用-fdelete-null-pointer-checks選項刪除非空屬性。

在Linux中,用於AArch64和PowerPC體系結構,如在GCC中一樣,啟用了“ -fasynchronous -wind-tables”來生成滾動調用表。

在“ #pragma clang loop vectorize_width”中,添加了指定“固定”(默認)和“可縮放”選項以選擇矢量化方法的功能。

在Linux上的clangd緩存服務器(Clang Server)中,長期操作期間的內存消耗已大大減少(提供了對malloc_trim的定期調用,以將可用的內存頁返回給操作系統)。

終於 如果您有興趣了解更多信息 關於這個新版本,您可以 請參考以下詳細內容。 鏈接。


發表您的評論

您的電子郵件地址將不會被發表。 必填字段標有 *

*

*

  1. 負責資料:AB Internet Networks 2008 SL
  2. 數據用途:控制垃圾郵件,註釋管理。
  3. 合法性:您的同意
  4. 數據通訊:除非有法律義務,否則不會將數據傳達給第三方。
  5. 數據存儲:Occentus Networks(EU)託管的數據庫
  6. 權利:您可以隨時限制,恢復和刪除您的信息。