The New Features Of LLVM 9.0 & Clang 9.0 – Includes Building The Linux x86_64 Kernel


The LLVM 9.0 release is running a few weeks behind schedule but should be out in the days ahead along with other LLVM sub-project releases like Clang 9.0. Here’s a look at what’s on tap for this half-year update to the LLVM compiler infrastructure.

Coming with LLVM 9.0 includes new/improved functionality like:

– The big amounts of Navi/GFX10 enablement for the AMDGPU compiler back-end.

– The new GFX908 Vega target for the “Arcturus” GPU.

– The RISC-V back-end is now officially supported.

– AVX512 VP2INTERSECT support.

– JITLink has landed.

– IBM MASS vectorization library support for POWER.

– Various optimizations.

The Clang 9.0 compiler meanwhile is bringing:

– The AMD Zen 2 “znver2” support.

– Initial C2x language mode support.

– Modules support is enabled in the C++2a mode.

– Time trace profiling data can now be easily generated.

– BFloat16 support.

– The Intel Cooperlake CPU target is added for that forthcoming Xeon family.

– Initial bits for Intel Sapphire Rapids and the new ENQCMD instruction.

– Interface Stubs for interface libraries to ELF shared objects.

– Clang-Scan-Deps was merged for faster dependency scanning.

– Arm Cortex-A76 support.

– Various OpenCL C additions as well as experimental support for C++17 features in OpenCL.

– Clang-Format can now format C# files.

– Support for “asm goto” so the mainline Linux x86_64 kernel can now build and boot with Clang 9.0. YEAH!

Stay tuned for the LLVM/Clang 9.0 release in the coming days and more compiler benchmarks on Phoronix.