The New Features & Changes With The LLVM Clang 8.0 Compiler Stack

Written by Michael Larabel in LLVM on 26 February 2019 at 06:29 AM EST. 3 Comments
LLVM
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.
Related News
About The Author
Michael Larabel

Michael Larabel is the principal author of Phoronix.com and founded the site in 2004 with a focus on enriching the Linux hardware experience. Michael has written more than 20,000 articles covering the state of Linux hardware support, Linux performance, graphics drivers, and other topics. Michael is also the lead developer of the Phoronix Test Suite, Phoromatic, and OpenBenchmarking.org automated benchmarking software. He can be followed via Twitter, LinkedIn, or contacted via MichaelLarabel.com.

Popular News This Week