LLVM Weekly - #234, June 25th 2018

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

News and articles from around the web

The next LLVM Sydney Users and Developers Meetup has been announced for this Thursday 28th June. It will feature a deep-dive into LLVM IR and the C++ API.

The video recording of the 12th LLVM Social Berlin is now available. Stefan Gränitz talks about ThinLTO and Incremental JIT Compilation.

On the mailing lists

Alan Davis is seeking feedback on his proposed method of modeling pre/post increment/decrement addressing modes. No responses yet, but I'm sure there are others who are interested.

Vedant Kumar kicked off an RFC on removing debug locations from ConstantSDNodes. This generated a reasonable amount of discussion, which Vedant was kind enough to summarise.

Piotr Padlewski reports that he's got a pair of devirtualisation patches up for review and is seeking help in getting them approved. These show an 80% performance boost in one microbenchmark, 0.7% on 7zip.

Duncan P. N. Exon Smith started an RFC thread on whether SmallVectors should be smaller.

LLVM commits

TableGen support for SearchableTables was rewritten to rely on more generic primitives (GenericEnum, GenericTable, SearchIndex) which allow generating custom enums and tables with lookup functions. r335225.

The loop unswitching pass learned to perform partial unswitching. r335156, r335203.

It is now possible to have tied operands of different classes in aliases. r334942.

The WebAssembly tablegen definitions now describe two parallel instruction sets: register-based and stack-based. r334985.

The assembler directives added to support CodeView emission have been documented. r335058.

The new Instruction::getNextNonDebugInstruction() and skipDebugInfo(BasicBlock::iterator) helpers can be used to help skip debug instuctions. r335083.

foreach TableGen multiclasses can now depend on template arguments. r335221.

Clang commits

A new protobuf-based fuzzer was added, supporting the generation of LLVM IR. r335374.

The Clang Static Analyzer gained the ability to report uninitialized fields after object construction. r334935.

A python tool for dumping and constructor header maps was checked in. r335177.

Other project commits