LLVM Weekly - #194, Sep 18th 2017

Welcome to the one hundred and ninety-fourth 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.

It was good to bump in to some LLVM Weekly readers at ORConf last weekend. Presentations should be available online soon. If you want to work on open source hardware full time, I have good news - we're looking for a hardware design engineer at lowRISC. See here for more details.

Review corner

From next week, I'm going to give the 'review corner' idea a try. If you have patches that have been stuck without any meaningful review for two weeks or more (or are making your first contribution to an LLVM project), please submit them for inclusion. This is an experiment - we're going to see how it works out and fine-tune the details as we go. Feedback always very welcome.

Submit your stuck review threads now: http://llvmweekly.org/reviewcorner

News and articles from around the web

DIVA: Debug Information Visual Analyser has been released by SN Systems as open source. It was first presented at the European LLVM Dev Meeting this year. To quote the project description "DIVA is a command line tool that processes DWARF debug information contained within ELF files and prints the semantics of that debug information. The DIVA output is designed to be understandable by software programmers without any low-level compiler or DWARF knowledge; as such, it can be used to report debug information bugs to the compiler provider."

Benoît Blanchon has written up a handy summary of new features in clang-format 5.0.0.

On the mailing lists

Zachary Turner has sent a heads-up about a slight change to the lit workflow. If you already use ./bin/llvm-lit in the build dir rather than utils/lit/lit.py from source, you should see no changes.

Dinar Temirbulatov has posted an RFC on adding a 'phantom' memory intrinsic. This would keep track of cases where load operations are removed by passes like InstCombine.

Kyle Butt has posted an RFC implementing trace-based basic block layout, with a detailed overview of the proposed design. He points to this paper as a relevant reference.

Discussion has continued regarding the integration of Polly in to LLVM.

LLVM commits

Support for parameterized register classes has landed. Making use of this feature removed 10k lines from the Hexagon backend. r313271, r313362.

GetElementPtr merging is now undone around indirect branches in some cases. This is another optimisation benchmarked using the Python interpreter loop, this time offering a 5% performance improvement. r312930.

MC-layer support for all RISC-V RV32I instruction has been committed, as well as disassembly support. r313485, r313486.

The llvm-dwarfdump command line parameter naming has been updated, as discussed on the mailing list last week. r312970.

LoopAcessAnalysis gained support for generating run-time alias checks in more cases. r313012.

The BPF backend now has an ASMParser. r313055.

A new flag was added to disable LowerDbgDeclare. This improved optimized debug info for address-taken variables, but may reduce accuracy of debug info in some cases. This is a temporary measure until a more long-term resolution can be implemented. r313108.

Clang commits

An initial version of the clang-refactor tool has been added. r313244.

clang-tidy has a new C++ core guideline checker. This performs checks for gsl::owner . r313067.

The recently added 'minimal' runtime for the Undefined Behavior Sanitizer (UBSan) has been documented. r312957.

clangd gained support for snippet completions. r313029.

Other project commits