LLVM Weekly - #229, May 21st 2018

Welcome to the two hundred and twenty-ninth 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 5.0.2 has been released. The main addition is mitigation for Spectre Variant 2 for X86 and MIPS.

On the mailing lists

Philip Reames proposes changing the representation of guards so they are considered explicit control flow rather than implicit control flow - i.e. they are considered to be a possible terminator. Philip suggests that although the current representation has advantages, updating upstream optimisation passes to support it would be a huge amount of work. Responses so far are in favour.

Vedant Kumar suggests removing tools that are only useful for testing LLVM from the binary LLVM+Clang distribution, noting tools like clang-check contribute significantly to the installed size. Feedback is being sought in that thread.

Fabien Giesen started a discussion on rotate instructions, suggesting that rotate intrinsics should be added. Sanjay Patel has some interesting thoughts on potential criteria or informal measures for the benefit of adding an intrinsic.

Chandler Carruth posted an RFC on simplifying the IR type system by removing TerminatorInst. The aim would be to remove TerminatoINst, which would allow CallInst and InvokeInst to share a base class and allow the removal of the CallSite abstraction.

Tom Stellard is getting ready for the 6.0.1 release, with rc2 scheduled for May 25th.

Jens Widell has summarized the thread on 'JumboSupport'/unity builds in Clang and proposes a path forwards.

Alexey Sidorin has shared proof-of-concept work on a new API for specifying a graph matcher for Clang static analyzer.

LLVM commits

A new script has been added to utils/ which will try to match open Phabricator reviews with potential reviewers. This script was mentioned at a EuroLLVM lightning talk. r332711.

GlobalISel now splits aggregates during IR translation, which is necessary to support big endian code correctly. r332449.

The DEBUG macro has been renamed to LLVM_DEBUG . r332240.

llvm-mca gained the abstraction of a pipeline stage, and now includes a simple FetchStage. r332390.

SimplifyLibCalls learned to replace locked IO with unlocked IO when this can be proven to be safe. r332452.

The MC Assembler now matches the behaviour of the GNU assembler for comparison operators. r332215.

LLVM's signal handling code is now signal-safe. r332496.

You can now use -Rpass-analysis=size-info to have remarks printed which describe when a pass changes the number of IR instructions in a module. r332739.

Clang commits

diagtool was added to the Clang install target and so will ship with the LLVM release. It now has a man page too. r332448.

Early textual substitutions can now be performed for Diagnostic messages specified in TableGen. This is intended to avoid repeating strings verbatim in multiple diagnostics. r332799.

Other project commits