GCC 11 Releasing Next Week With Intel AMX, New CPU Support, More C++20/C++23
I am currently working on more GCC 11 (and LLVM Clang 12) compiler benchmarks for publishing in the coming days while the highlights of this inaugural GCC 11.1 stable release includes:
- The default C++ mode is now GNU++17 (C++17) rather than C++14.
- GCC 11 now defaults to the DWARF version 5 debugging information format.
- Various portions of the upcoming C2X language revision have been implemented and available via the "-std=c2x" switch.
- GCC 11 has continued with its bring-up of C++20 with more features now being implemented. Libstdc++ also has a number of C++17/C++20 improvements and experimental work on C++23.
- New x86_64 instructions supported are TSXLDTRK, SERIALIZE, HRESET, UINTR, KEYLOCKER, AMX-TILE/AMX-INT8/AMX-BF16, and AVX-VNNI.
- New x86_64 CPUs supported by GCC 11 on the Intel side include Sapphire Rapids, Alder Lake, and Rocket Lake. AMD Zen 3 CPUs also have initial support in place.
- New warnings enabled by default over mismatched de-allocations, string functions reading past the end of the arrays passed to them as arguments, and unsupported ThreadSanitizer features.
- Continued work on OpenMP 5.0 and OpenACC 2.6 support.
- Hardware-assisted AddressSanitizer support, which is so far found for AArch64 and not yet suitable for use-cases outside of building the Linux kernel.
- GCC itself now requires the host compiler to handle C++11 compared to the previous requirement of C++98.
- AMD's front-end for the BRIG format of HSAIL has been deprecated and will likely be cleared out in GCC 12.
- Libgccjit is now formally considered stable.
- Arm CPUs now officially supported include the Cortex A78, A78AE, A78C, X1, and R82. The Arm Neoverse V1 and Arm Neoverse N2 are also now supported. The Fujitsu A64FX is also now supported. On the ARM front GCC can also now make use of auto-vectorize operations on complex numbers using the advanced SIMD instructions of ARMv8.3-A, SVE, SVE2, and MVE.
- GCC 11 now allows mitigating against Arm's Straight-Line Speculation vulnerability using the "-mharden-sls" option.
- The AMD Radeon GCN back-end now supports the gfx908 back-end, a.k.a. the AMD Instinct MI100.
- GCC 11 on RISC-V now has Address Sanitizer support, IFUNC, and other improvements.
- Improvements to GCC's static analyzer.
More details on GCC 11 via our past articles on this annual open-source compiler release as well as via the GNU.org documentation.