LLVM Weekly - #228, May 14th 2018

Welcome to the two hundred and twenty-eighth 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.

If you're interested in what went on at the RISC-V Workshop in Barcelona last week, you might want to read my live blog for day one and day two.

News and articles from around the web

C++ Insights is a new Clang-based tool by Andreas Fertig which tries to reveal the sort of "magic" the compiler does behind the scenes, e.g. compiler provided functions or automatic downcasts. It does this via a source-to-source transformation. Be sure to check out the online demo.

The first LLVM social in Beijing will be held on May 19th.

A new series of meetups in Sydney, Australia have been announced. The first meetup on May 31st features introductory talks on getting started with LLVM. "This meetup is also a kick-off meetup for a series dedicated to bringing more enthusiasts together and up to speed with the LLVM tools, development process, and internals. We're also looking for interested presenters and those with experience already working with the LLVM compiler infrastructure."

More videos have now been posted to YouTube from the recent EuroLLVM Developers' Meeting.

On the mailing lists

Tobias Edler von Koch has written an RFC on (Thin)LTO with linker scripts, building upon a presentation at the last US LLVM Developers' meeting. Tobias summarises the aim: "The end goal of this effort is to extend the benefits of (Thin)LTO, including significant code size and performance improvements, to the many embedded and system-level software projects that rely on linker scripts to control (ELF) image layout"

The issue of the use of C++14 constructs in the implementation of LLVM projects and the project build requirements is being revisited. JF Bastien suggested that with six months having past since the last discussion, perhaps now is the time to look again at using C++14 in LLVM. He points out that WebKit, Chromium, and Firefox are all moving or have already moved to C++14. Zachary Turner proposes moving to C++17 directly to avoid future hassle. Erich Keane started a new thread to discuss a concrete policy on host compiler requirements, suggesting major releases of host compilers (MSVC, GCC, Clang) from the past 3 years should be supported.

Sanjay Patel kicked off a thread on performing reassociation optimisation in LLVM IR.

In response to a question from Jonas Paulsson, Andrew Trick has given a really useful overview of the design philosophy of the LLVM MachineScheduler.

Jaseem Abid suggests moving llvm-emacs mode out of the LLVM repository and into its own git repository.

Andrea Di Biagio started an RFC thread on adding MC support for variant scheduling classes. As explained in that post, variant scheduling classes model situations where the scheduling information differs depending on the values of the operands. Adding support for representing this at the MC level would allow llvm-mca to understand and resolve variant scheduling classes.

Joel E. Denny proposes adding support to FileCheck for checking multiple occurrences of the same string using CHECK-DAG. He later follows up with further information and paths forward based on some initial implementation work.

LLVM commits

WebAssembly gained an initial disassembler. r332052.

CodeGenPrepare was modified to split large data structures in the hope of maximising the opportunity of merging offsets into the generated load/store instructions. r332015.

An initial version of the llvm-strip tool was introduced. This is ultimately intended to be a drop-in replacement for binutils strip. r331663.

DILabel metadata and the llvm.dbg.label intrinsic have been introduced to LLVM. These allow debug info on labels to be emitted, which ultimately enables debuggers to set breakpoints on labels. r331841.

HexagonMCCodeEmitter was refactored to use data tables to handle fixups. r331883.

The .option rvc/norvc directives are now supported in RISC-V assembly. r332107.

Clang commits

A large patch touching 14k lines removes all instances of \brief commands in Doxygen comments. Doxygen is run with autobrief, so these markers are unnecessary. r331834.

Clang codegen has been implemented for the proposed C++2a comparison operator. r331677.

-foutline is now -moutline . r331806.

Support was added for the no_stack_protector attribute. r331925.

New atomic_fetch_{min,max,umin,umax} intrinsics were added. r332193.

Other project commits