LLVM Weekly - #114, Mar 7th 2016
Welcome to the one hundred and fourteenth 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 firstname.lastname@example.org, or @llvmweekly or @asbradbury on Twitter.
The canonical home for this issue can be found here at llvmweekly.org.
News and articles from around the web
LLVM has been accepted as a mentoring organisation in Google Summer of Code 2016. See here for more about what that means. If you're a student who would like to get paid to work on LLVM over the summer, you should definitely consider applying. Also take a look at the full list of organisations in GSoC 2016. If you have an interest in open source hardware, in my (biased) opinion you should definitely look at lowRISC's listed project ideas.
LLVM and Clang 3.8 'final' has been tagged. A release should be imminent.
There was a big C++ committee meeting last week. You can find summaries here and here. If you were hoping for modules, concepts, UFCS, ranges, or coroutines in C++17 I'm afraid you're in for disappointment. Many new features will be available in C++ Technical Specifications though.
llvmlite 0.9.0 has been released. llvmlite is a light-weight Python binding for LLVM. If you're wondering how to get started with llvmlite, then check out this recent blog post from Ian Bertolacci on writing fibonacci in LLVM with llvmlite.
Andi McClure has written a really interesting blog post about writing software without a compiler. In this case, generating LLVM IR from LuaJIT.
On the mailing lists
John McCall has posted an RFC on implementing the Swift calling convention in LLVM and Clang. Feedback is generally positive and there's an interesting discussion on the handling of Swift's errors in the calling convention.
Peter Collingbourne has shared a new RFC on adding a new ABI for virtual calls, termed the 'relative ABI'. He'd also like to change how virtual calls are represented in the IR.
Grigori Fursin from Dividiti shared some recent work on crowdtuning compiler optimisation heuristics.
Xinmin Tian has shared a proposal for function vectorisation and loop vectorisation with function calls.
Akira Hatanaka is interested in comments to his RFC on more precise lifetime.end metadata. In the given example, three local variables have non-overlapping lifetimes and could potentially use the same stack slot, but this isn't currently done.
MemorySSA has gained an initial update API. r262362.
TableGen can now check at compile time that a scheduling model is complete. r262384.
New comments in PassBuilder give a description of what trade-offs are expected for each optimisation level. r262196.
LoopLoadElimination is now enabled by default. r262250.
A new patch adding infrastructure for profile-guided optimisation enhancements in the inline has landed. r262636.
Experimental ValueTracking code which tried to infer more precise known bits using implied dominating conditions has been removed. Experiments didn't find it to be profitable enough, but it may still be useful to people wanting to experiment out of tree. r262646.
Clang's C API gained an option to demote fatal errors to non-fatal errors. This is likely to be useful for clients like IDEs. r262318.
clang-cl gained initial support for precompiled headers. r262420.
-fembed-bitcodedriver option has been introduced. r262282.
Semantic analysis for the swiftcall calling convention has landed. r262587.
Clang's TargetInfo will now store an actual DataLayout instance rather than a string. r262737.
Other project commits
LLDB can now read line tables from Microsoft's PDB debug info files. r262528.
The LLVM test-suite gained the ability to hash generated binaries and to skip tests if the hash didn't change since a previous run. r262307.