GCC 11穩定版下週發布支持新CPU 引入Intel AMX
在近期發布多個候選版本之後,GCC 11 正式版有望於下週發布。目前,外媒Phoronix 正在研究GCC 11(和LLVM Clang 12)編譯器基準,以便於在未來幾天正式發布之後進行全面的測試。GCC 11.1 穩定版的亮點包括
● 默認的C++ 模式現在已經升級為GNU++17(C++17),而非C++14
● GCC 11 現在默認使用DWARF 第5 版調試信息格式。
● 即將到來的C2X 語言修訂版的各個部分已經實現,並可以通過”-std=c2x “開關使用。
● GCC 11已經繼續了它對C++20的支持,現在有更多的功能正在實現。Libstdc++也有一些C++17/C++20的改進和C++23的實驗性工作。
● 新支持的x86_64 指令有TSXLDTRK, SERIALIZE, HRESET, UINTR, KEYLOCKER, AMX-TILE/AMX-INT8/AMX-BF16, 和AVX-VNNI。
● GCC 11在英特爾方面支持的新x86_64 CPU包括Sapphire Rapids、Alder Lake和Rocket Lake。AMD Zen 3 CPU也有初步的支持。
● 對於不匹配的去分配、字符串函數讀取超過作為參數傳遞給它們的數組的末端以及不支持的ThreadSanitizer特性,默認啟用新的警告。
● 繼續進行OpenMP 5.0和OpenACC 2.6支持工作。
● 硬件輔助的AddressSanitizer支持,目前只在AArch64中發現,還不適合用於構建Linux內核以外的用途。
● GCC本身現在要求主機編譯器處理C++11,而以前的要求是C++98。
● AMD對HSAIL的BRIG格式的前端已經被廢棄,並可能在GCC 12中被清除掉。
● Libgccjit現在被正式認為是穩定的。
● 現在正式支持的Arm CPU包括Cortex A78、A78AE、A78C、X1和R82。Arm Neoverse V1和Arm Neoverse N2現在也被支持。富士通A64FX現在也被支持。在ARM方面,GCC現在還可以使用ARMv8.3-A、SVE、SVE2和MVE的高級SIMD指令對複雜數字進行自動矢量化操作。
● GCC 11現在允許使用”-mharden-sls “選項來緩解Arm的直線推測漏洞。
● AMD Radeon GCN後端現在支持gfx908後端,又稱AMD Instinct MI100。
● RISC-V上的GCC 11現在支持Address Sanitizer、IFUNC以及其他改進。
● 對GCC的靜態分析器進行了改進。