LLVM Weekly - #78, June 29th 2015
Welcome to the seventy-eighth 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.
I'm in the Bay Area this week for the second RISC-V workshop where my colleague and I will of course be talking about lowRISC. If you're not able to make it, keep an eye on the lowRISC blog which I intend to keep updating semi-live with notes from the talks and presentations.
The canonical home for this issue can be found here at llvmweekly.org.
News and articles from around the web
Hans Wennborg has shared the release plan for LLVM/Clang 3.7. This would see the release branch created on 14th July, with a final release targeted for 21st August.
A detailed analysis of the results of the "What is C in practice" survey has now been posted. The survey gained around 300 responses, and aims to help guide the definition of a formal model for the de facto standard of C (i.e. C as it is used rather than purely as specified in the ISO standard).
The 3.6.2-rc1 LLVM/Clang release has been tagged. As always, testing is encouraged.
On the mailing lists
Unfortunately at the time of writing GMANE seems to be having some problems, so for this week I'll be using links to the pipermail archives of the relevant mailing list posts.
Adrian Prantl has a proposal for improving the quality of debug locations and of DbgValueHistoryCalculator. This will involve adding new heuristics so DbgValueHistoryCalculator is smarter at creating ranges.
Sanjoy Patel kicked off a discussion about conversion between bitwise AND and short-circuit evaluation for booleans. In particularly, he's wanting to ensure that short circuit evaluation is not used (though as is pointed out in the thread, the benefit of saving the branch is highly microarchitecture dependent).
Dan Liew has posted an RFC on improving the testing of exported LLVM CMake targets. He has produced a toy project making use of these targets, which could be used to help ensure they stay in working shape.
Bjarke Roune is proposing functionality to determine when a posion value is guaranteed to produce undefined behaviour, with the aim of improving handling of nsw/inbounds and similar in LLVM passes such as scalar evolution.
Philip Reames has responded to a question from Chandler Carruth with a good summary of the motivation for supporting inlining through statepoints and patchpoints.
LLVM commits
The InterleavedAccess pass has been introduced to identify interleaved memory accesses so they can be transformed into target-specific intrinsics. r240751.
Initial serialisation of machine instructions has been added, representing MachineInstructions in YAML. r240295, r240425, and more.
The CaptureTracking pass has been optimised to improve performance on very large basic blocks. r240560.
A parser for LLVM stackmap sections has been added and made available through llvm-readobj. r240860.
Clang commits
The recently added nullability attributes have been extensively documented. r240296.
constexpr can now be specified in condition declarations. r240707.
Other project commits
The README for the COFF linker in LLD has been updated with new performance numbers. It's now 3.5 seconds to self-host (was previously 5 seconds), and this compared 7 seconds with the MSVC linker and 30 seconds with the old LLD. r240759.
The safestack TODO list in compiler-rt has been updated. r240473.
LLD gained support for thread-local storage in MachO objects. r240454.
Polly has had a meaningful improvement in compile time through enabling the small integer optimisation of the ISL (Integer Set Library). Polybench benchmarks on average take 20% less time to compile. r240689.