LLVM 6 reduces Specter’s danger, has improved support for Intel’s Windows and CPUs, and also includes WebAssembly among the supported target platforms.

The infrastructure of the LLVM compiler has gone from a technically curious thing to a living part of the modern software landscape. This is the core behind the Clang compiler, behind the Rust and Swift compilers, and provides ample opportunities for developing compilers for new languages.
This is also a fairly fast-paced project, its major releases come out every six months or close to it. Version 6.0, released recently, continues the LLVM mission to deepen and expand support for various target platforms. The update also adds some patches against newly discovered processor-level vulnerabilities.
')
Partial protection from Specter added to LLVM
Vulnerability CPU Specter and Meltdown exploit features of the speculative performance of modern processors. They are difficult to fix, since they require changes to both the microcode of the CPU and the existing software.
In order for applications built using LLVM to also contribute to the fight against these vulnerabilities, LLVM offers support for so-called “retpolines,” software constructs that partially reduce Specter's attack ability. In order to use this feature, you need to recompile programs with LLVM 6.0 with the -mretpoline key.
Improved LLVM CodeView debugging for Windows
Microsoft Windows uses debugging information stored in CodeView format, similar to the DWARF format used on Linux systems.
CodeView was previously added to LLVM as part of the overall efforts to develop LLVM under Windows and to improve the state of debugging tools under Windows using CodeView.
LLVM 6 further improves this support, thanks to Microsoft assistance as well as through thorough reverse engineering by the LLVM team. Long-term plans are to improve CodeView support to the point where languages other than C / C ++ compiled into LLVM can reliably use CodeView in their tools.
LLVM supports WebAssembly as link target
WebAssembly, a binary web browser application format, began to evolve from the experimental stage to the stage of the technology used in production. A key part of the WebAssembly toolchain, the same as Emscripten and PNaCL, is LLVM.
The most recent step in supporting WebAssembly linking in LLVM was the wasm-ld tool. This tool receives the assembler created in LLVM (the target wasm32-unknown-unknown-wasm) as input, and generates a ready-to-use binary file WebAssembly.
WebAssembly support is still incomplete, and work on WebAssembly is still ongoing, but LLVM will remain a key element of the WebAssembly stack.
Improved Intel CPU support in LLVM
LLVM programs now have the ability to use instructions from many Intel processor families: Sandy Bridge, Ivy Bridge, Haswell, Broadwell, and Skylake. Intel Icelake is also supported now.
Currently, LLVM generates code for Intel processors using vector extensions: VAES, GFNI, VPCLMULQDQ, AVX512VBMI2, AVX512BITALG, and AVX512VNNI.
Code generation has been improved for various Intel processor operations, such as memory comparisons, vector truncations, vector multiplication by a 32-bit integer value.