LLVM Weekly - #99, Nov 23rd 2015
Welcome to the ninety-ninth 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.
The canonical home for this issue can be found here at llvmweekly.org.
News and articles from around the web
LLVM/Clang 3.7.1-rc2 has been tagged. As always, help testing is appreciated.
Clasp 0.4 has been released. Clasp is a new Common Lisp implementation that uses LLVM as a compiler backend and aims to offer seamless C++ interoperation.
On the mailing lists
Quentin Colombet has shared a plan for moving forwards with global instruction selection, as proposed in his Dev Meeting talk. There's a lot of enthusiasm for this work, though some questions about how in practical terms the development should proceed and be tested. There is also hope that this new work will allow the distinction between integers and pointers to be preserved through to MachineInstructions. This is useful both for GC and for architectures where pointers aren't integers.
Eric Christopher has shared a summary of discussions from the recent Birds of a Feather discussion on the LLVM C API. This includes proposed policy for stability guarantees and extending the APIs.
Ed Maste has been experimenting with linking the FreeBSD base system with lld. With a few extra patches he's managed to link the whole FreeBSD userland.
Artem Dergachev has shared some minutes from a call about summary-based inter-procedural analysis for Clang's static analyser.
Steve King is concerned about recent code size regressions with Os. The issue was bisected to recent changes to the heuristic for merging conditional stores. James Molloy, who authored the patch in question suggests more investigation is necessary.
Rail Shafigulin is working on a custom VLIW architecture and has had a number of questions about the DFAPacketizer. Krzysztof Parzyszek has provided useful answers each time - well worth a read of these threads if you're doing any work with VLIW or want to learn more about DFAPacketizer.
Nick Johnson pointed out an interesting potential bug in the LiveVariables pass. There haven't been any responses yet, but he has followed up with a patch to fix the issue.
Amjad Aboud has posted a detailed RFC on ensuring LLVM debug info supports all lexically scoped entities. He includes a simple example which shows where block-local typedefs or class definitions can lead to problems.
LLVM commits
Initial support for value profiling landed. r253484.
It is now possible to use the
-force-attribute
command-line option for specifying a function attribute for a particular function (e.g. norecurse, noinline etc). This should be very useful for testing. r253550.The WebAssembly backend gained initial prototype passes for register coloring (on its virtual registers) and register stackifying. r253217, r253465.
The built-in assembler now treats fatal errors as non-fatal in order to report all errors in a file rather than just the first one encountered. r253328.
As discussed on the mailing list last week, lane masks are now always precise. r253279.
Support for prelinking has been dropped. See the commit message for a full rationale. r253280.
llvm-lto can now be used to emit assembly rather than object code. r253622, r253624.
Clang commits
Clang should now be usable for CUDA compilation out of the box. r253389.
When giving the
-mcpu/-march
options to Clang targeting ARM, you can now specify+feature
. r253471.