The New Features & Changes With The LLVM Clang 8.0 Compiler Stack
If all goes well, LLVM 8.0 will ship as soon as tomorrow along with the Clang 8.0 C/C++ compiler and the other sub-projects for this open-source compiler stack. Here's a look at what LLVM 8 means for developers.
As the latest six-month update to LLVM, there is a lot on the table for LLVM 8.0 and its associated projects. Some of the highlights include:
- LLVM's WebAssembly target is no longer considered experimental and is now enabled by default.
- Intel Cascade Lake support can now be tapped via -march=cascadelake for these new Intel Xeon CPUs. Related, there's also been some AVX-512 improvements for LLVM 8.
- Continued improvements to the AMDGPU LLVM back-end for the open-source Radeon graphics stack... This is a big one particularly if you are running on newer AMD GPUs like Vega.
- Clang now has options to initialize automatic variables with a pattern. LLVM's documentation explains this is intended as a "last resort" for when programmers have some undefined behavior in their code and to "make undefined behavior hurt less." The -ftrivial-auto-var-init=uninitialized is now on by default for this behavior that should help address potential security issues.
- AMD Piledriver / Bdver2 tuning was improved upon for those still using these older AMD Bulldozer CPUs.
- The Clang compiler front-end now supports per-function speculative load hardening for improving its Spectre V1 defenses with the -mspeculative-load-hardening switch.
- ARMv8.5 Branch Target Identification as part of Arm's new Spectre defenses.
- Code generation improvements for POWER9 along with a variety of other POWER architecture enhancements.
- The LLVM ORC JIT is now supported for MIPS/MIPS64.
- GNU Hurd toolchain support was merged to mainline LLVM/Clang.
- Support for profile-driven software cache pre-fetching on x86 architectures.
- LLDB now provides syntax highlighting in the terminal when printing C code.
- Continued work on improving diagnostics for Clang.
- Continued improvements to the Clang compiler on Windows.
- OpenCL support within Clang now has improved address space support with Clang built-ins, various fixes, new Intel vendor extensions are supported, many C++ for OpenCL additions, and other work in this area.
- New OpenMP 5.0 features were added to Clang as well as extending the NVIDIA CUDA device support.
Overall LLVM/Clang 8.0 is shaping up to be another great release while on the GNU front, GCC 9.1 stable will be released in the coming weeks. See the recent large GCC 9 vs. Clang 8 compiler benchmark comparison for those interested in performance metrics.
As the latest six-month update to LLVM, there is a lot on the table for LLVM 8.0 and its associated projects. Some of the highlights include:
- LLVM's WebAssembly target is no longer considered experimental and is now enabled by default.
- Intel Cascade Lake support can now be tapped via -march=cascadelake for these new Intel Xeon CPUs. Related, there's also been some AVX-512 improvements for LLVM 8.
- Continued improvements to the AMDGPU LLVM back-end for the open-source Radeon graphics stack... This is a big one particularly if you are running on newer AMD GPUs like Vega.
- Clang now has options to initialize automatic variables with a pattern. LLVM's documentation explains this is intended as a "last resort" for when programmers have some undefined behavior in their code and to "make undefined behavior hurt less." The -ftrivial-auto-var-init=uninitialized is now on by default for this behavior that should help address potential security issues.
- AMD Piledriver / Bdver2 tuning was improved upon for those still using these older AMD Bulldozer CPUs.
- The Clang compiler front-end now supports per-function speculative load hardening for improving its Spectre V1 defenses with the -mspeculative-load-hardening switch.
- ARMv8.5 Branch Target Identification as part of Arm's new Spectre defenses.
- Code generation improvements for POWER9 along with a variety of other POWER architecture enhancements.
- The LLVM ORC JIT is now supported for MIPS/MIPS64.
- GNU Hurd toolchain support was merged to mainline LLVM/Clang.
- Support for profile-driven software cache pre-fetching on x86 architectures.
- LLDB now provides syntax highlighting in the terminal when printing C code.
- Continued work on improving diagnostics for Clang.
- Continued improvements to the Clang compiler on Windows.
- OpenCL support within Clang now has improved address space support with Clang built-ins, various fixes, new Intel vendor extensions are supported, many C++ for OpenCL additions, and other work in this area.
- New OpenMP 5.0 features were added to Clang as well as extending the NVIDIA CUDA device support.
Overall LLVM/Clang 8.0 is shaping up to be another great release while on the GNU front, GCC 9.1 stable will be released in the coming weeks. See the recent large GCC 9 vs. Clang 8 compiler benchmark comparison for those interested in performance metrics.
3 Comments