LLVM Weekly - #173, Apr 24th 2017

Welcome to the one hundred and seventy-third 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

KDAB have written a blog post about the clazy clang plugin, which has a variety of checks and warnings for Qt codebases.

The LLVM-based Crystal language has just released version 0.22.0.

I've just spotted that another language using LLVM for codegen, Pony, now has a weekly development summary.

"Source code quality classification based on software metrics" is a recent publication that looks at extending LLVM to generate standard source code quality metrics.

On the mailing lists

LLVM commits

LLVM's bitcode format now has a string table. This reduces the link time for Chromium with ThinLTO by 7% for no-op incremental builds. r300464.

The way the Mips backend handles relocations and addresses has been documented. This is a recommended read for anyone interested in LLVM backend work. AArch64 has now been refactored to use a similar approach. r300986, r301005.

LLVMMetadataRef, the first step towards a new metadata API has been committed. r300447.

libFuzzer gained an interesting new option, -cleanse_crash which tries to replace all bytes in a crash reproducer with garbage while preserving the crash behaviour. r300498.

The documentation on statepoints (used to support garbage collection) has been updated. r300782.

Support has been added for representing the types needed for ARM's Scalable Vector Extension. r300838, r300840, r300842.

Clang commits

Optimisation work on UBSan has continued, and the number of null checks has been substantially reduced. r300508, r300509.

#pragma clang attribute has been introduced. This can be used to apply an attribute to multiple declarations by 'pushing' or 'popping' the attribute. r300556.

git-clang-format is now mostly Python 3 compatible. r300891.

Other project commits