LLVM Weekly - #219, Mar 12th 2018

Welcome to the two hundred and nineteenth issue of LLVM Weekly, a weekly newsletter (published every Monday) covering developments in LLVM, Clang, and related projects. LLVM Weekly is brought to you by Alex Bradbury. Subscribe to future issues at http://llvmweekly.org and pass it on to anyone else you think may be interested. Please send any tips or feedback to asb@asbradbury.org, or @llvmweekly or @asbradbury on Twitter.

News and articles from around the web

LLVM 6.0.0 has been released. "This release is the result of the community's work over the past six months, including: retpoline Spectre variant 2 mitigation, significantly improved CodeView debug info for Windows, GlobalISel by default for AArch64 at -O0, improved scheduling on several x86 micro-architectures, Clang defaults to -std=gnu++14 instead of -std=gnu++98, support for some upcoming C++2a features, improved optimizations, new compiler warnings, many bug fixes, and more."

Clang is now used to build Chrome for Windows, and this LLVM blog post goes in to much more detail.

Version 1.1 of the Pocl implementation of the OpenCL standard has been released. This release features support for LLVM/Clang 6.0 and 5.0, as well as experimental SPIR and SPIR-V support.

On the mailing lists

Zachary Turner is looking for feedback on approaches to extending llvm-objcopy to support COFF.

Sanjay Patel has followed up on the discussion on simplifying floating point operations with undef with his understanding of the conclusion and now has four patches up for review.

In response to a question, Francis Visoiu Mistrih gives a helpful overview of MachineMemOperand.

Alexandre Isoard wonders if anyone is interested in a feature to export IR to a git repo after each pass.

Volodymyr Sapsai has proposed making the C++ atomic and C stdatomic.h headers explicitly incompatible, resulting in a short and easy to understand error message if both are included in the same translation unit.

LLVM commits

TableGen gained !foldl and !isa operations, as well as a new defset statement. r326790, r327117, r327121.

llvm-mca, the LLVM Machine Code Analyzer tool, has been committed. It an be used to statically estimate the performance of code. r326998.

The syntax for !foreach in TableGen has been modified, allowing more complex expressions. r326705.

llvm::GetStatistics() can now be used to inspect the statistics which have been touched during execution. r32738.

The DependenceAnalysis pass has been cleaned up to no longer use GetElementPtr, and instead rely on Scalar Evolution. r326837.

The LLVM Language Reference Manual was updated to clarify that floating point instructions do not have side effects. r327138.

Clang commits

The new CMake variables CLANG_DEFAULT_STD_C/CLANG_DEFAULT_STD_CXX can be set when building Clang to override the default C/C++ standard. r326836.

Clang will now eagerly emit lifetime.end markers for aggregates returned from calls. r327229.

Other project commits