LLVM Weekly - #286, June 24th 2019

Welcome to the two hundred and eighty-sixth 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

The LLVM 9.0 release schedule has been proposed and is now listed on llvm.org. It would branch on 18th July with rc1 soon after. rc2 would follow on 7th August with a final on 28th August.

On the mailing lists

Richard Sandiford is still seeking more feedback on his RFC on adding vscale vector types to C and C++.

Francis Visoiu Mistrih has written an RFC on optimisation remark encoding formats and future plans. The LLVM bitstream format has been selected, producing a remarks file (for clang) that is 13.4x smaller than the current YAML remarks output. The post also discusses plans to emit remarks in object files.

Jeremy Morse is seeking feedback on using the Dexter debug experience tester tool for LLVM debuginfo integration tests.

Amara Emerson shares an RFC on memcpy inlining in IR, with the motivation of sharing the same logic between GlobalISel and SelectionDAG.

Simon Pilgrim proposes retiring support for building LLVM/Clang on Visual Studio 2015. So far, nobody has objected.

Bardia Mahjour shares minutes from the loop optimisation working group.

LLVM commits

The scalable vector IR type was recommitted. r363658.

MC-layer ARM MVE instruction set support continues to expand. r364037, r364040, and more.

llvm-mca's bottleneck analysis can now identify and print the most expensive sequence of instructions according to the simulation. r364045.

The MachineIR stack-id is now an enum and the default stack-id is now pretty printed as 'default'. r365333.

CodeGenPrepare's GEP splitting support was improved. It will now split large base addresses even when the GEP is in the same basic block, and the DAGCombiner was modified so it won't just undo the split again. r363544.

The GlobalISel localizer was rewritten to run in both an inter and intra-block phase. This improved CTMark code size on arm64 by 1.2%. r363632.

TableGen was enhanced to allow multiple encodings to disassembler to the same instruction, using the AdditionalEncoding class. r363744.

The ExpandISelPseudo pass was renamed to FinalizeISel. r363757.

The RISC-V backend gained support for lowering of global TLS addresses. r363771.

Clang commits

Initial support for Clang interface subs has landed. This allows generation of stub files containing mangled name information that can be used to produce a stub library. r363948.

Clang now understands the C++2a [[no_unique_address]] attribute. r363976.

Other project commits