LLVM Weekly - #140, Sep 5th 2016

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

LLVM and Clang 3.9 have been released. You can find the LLVM release notes here. Onwards to 4.0!

Kirill Bobyrev has written a blog post offering a general introduction to the various clang-based tools.

It's the LLVM Cauldron on Thursday this week and we have a great talk line-up. I hope to see a number of you there!

On the mailing lists

LLVM commits

A new counter function insertion pass has been added. This will be used to support -pg profiling, which inserts calls to count function invocations. If this is done in the frontend, the count can become inaccurate due to inlining. r280347.

WebAssembly can now handle setjmp/longjmp using Javascript try and catch. r280302.

The AMDGPU backend now includes a custom MachineSchedStrategy. It is not yet enabled by default. r279995.

The ilist<T>::reverse_iterator now has the same invalidation guarantees as an ilist<T>::iterator , i.e. it is never invalidated unless the node it references is deleted. r280032.

MIPS gained a new generic scheduler model. r280374, r280377.

LLVM's ADT library now has simple_ilist , a simple intrusive list. The aim is to offer an intuitive API with the right defaults for intrusive lists. r280107.

llvm-readobj gained support for printing GNU notes such as Build ID. r280131.

Coroutine implementation continues with the addition of promise support. r280184.

The EarlyCSE (early common subexpression elimination) pass now has the option of using MemorySSA for more precise memory dependency checking. r280279.

lit will now use Python's multiprocessing library by default on Windows. This can result in a large speedup for a check-all. r280382.

Clang commits

A new attribute require_constant_initialization was added. This acts as a compile time assertion that the requirements for constant initialization have been met. r280525.

The Clang driver gained support for building C++ TS modules, e.g. the --precompile option. r280134.

A clang-reorder-fields tool was added to clang-tools-extra. This aims to make it easier to change the order of fields of a struct or class in a large codebase. r280456.

Other project commits