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 https://llvmweekly.org and pass it on to anyone else you think may be interested. Please send any tips or feedback to [email protected], 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
-
Reid Kleckner would like to revisit whether it makes sense to continue supporting MSVC 2013. If dropping MSVC 2013 would be problematic for you, then do speak up.
-
Renato Golin has posted a call for further input on the GitHub move survey. Do take a look at the the in-review proposal written my Mehdi Amini.
-
Kirill Bobyrev has shared a design document about his proposed clang-refactor tool.
-
Dean Michael Berris is interested in the status of benchmarks for LLVM-generated binaries. Renato Golin has responded to describe the current state of performance tracking.
-
Kate Stone has posted a reminder that a full clang-format reformatting of LLDB will take place on 7th September.
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 anilist<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.