[Apologies, I forgot to send to the list yesterday] LLVM Weekly - #68, Apr 20th 2015 ============================== If you prefer, you can read a HTML version of this email at <http://llvmweekly.org/issue/68>. Welcome to the sixty-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](http://asbradbury.org). 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 at asbradbury.org>, or @llvmweekly or @asbradbury on Twitter. ## News and articles from around the web Last week was of course [EuroLLVM](http://llvm.org/devmtg/2015-04/). It was good to put faces to names for a number of you, or to meet people I've only communicated with over twitter. Slides and videos should be forthcoming, but in the meantime you can read the [liveblog](http://llvmweekly.org/issue/67) I maintained for the talks I was able to attend. A big thank you to the organisers and all those who presented. The highest profile news for some time in the LLVM community is that [Microsoft are working on an LLVM-based compiler for .NET CoreCLR](http://blog.llvm.org/2015/04/llilc-llvm-based-compiler-for-dotnet.html). What's more, LLILC (pronounced 'lilac') is open source, and they hope to contribute their LLVM changes upstream. The [Cerberus team](http://www.cl.cam.ac.uk/~pes20/cerberus/) are trying to find an answer to the question '[What is C in practice?](http://tinyurl.com/csurvey2), and you can help by filling out their survey. Honza Hubička has posted a fantastic overview of the [improvements to link-time and inter-procedural optimisations in GCC5](http://hubicka.blogspot.it/2015/04/GCC5-IPA-LTO-news.html), featuring figures from Firefox builds. It seems like impressive improvements have been made. Simon Cook has written a blog post about [using TableGen outside of LLVM](http://www.embecosm.com/2015/04/14/utilizing-tablegen-for-non-compiling-processes/), specifically for things like parameterisable SSH configs. Crazy? Genius? Why not both? ## On the mailing lists * Duncan P. N. Exon Smith has proposed an [RFC for metadata attachments to function definitions](http://article.gmane.org/gmane.comp.compilers.llvm.devel/84555/). There's some concern about the effect this would have on the size of Function. * Ivan Baev is proposing an [indirect call promotion LLVM pass](http://article.gmane.org/gmane.comp.compilers.llvm.devel/84678). This mailing list post gives design notes on the implementation and outlines the shortcomings of the current version of the patch. * Tom Stellard queries the [difference between Latency and ResourceCycles in MISched](http://article.gmane.org/gmane.comp.compilers.llvm.devel/84553). Andy Trick gives a [very handy answer](http://article.gmane.org/gmane.comp.compilers.llvm.devel/84574). * Paul Robinson is seeking feedback on [adding a 'debugger target'](http://article.gmane.org/gmane.comp.compilers.clang.devel/42233), arguing that currently the target platform is used to infer the desired debugger (and thus make choices on e.g. accelerator tables), but of course the choice of debugger doesn't necessarily follow from the platform. * Colin LeMahieu is looking to contribute an assembler for the Hexagon DSP, but has [questions about how its funky grammar should be handled](http://article.gmane.org/gmane.comp.compilers.llvm.devel/84541). ## LLVM commits * The `dereferenceable_or_null` attribute has been born. As described in the commit message, the motivation is for managed languages such as Java. [r235132](http://reviews.llvm.org/rL235132). * A new layer was added to the Orc JIT API for applying arbitrary transforms to IR. [r234805](http://reviews.llvm.org/rL234805). * Memory intrinsics can now be tail calls. [r234764](http://reviews.llvm.org/rL234764). * A handy Python script has been added for generating C programs that have a control flow graph which is a ladder graph. The intent is to use it to test whether an algorithm expected to be linear time on the CFG really is. [r234917](http://reviews.llvm.org/rL234917). * The code for lowering switches and extracting jump tables has been rewritten, and should produce better results now. [r235101](http://reviews.llvm.org/rL235101). * Call can now take an explicit type parameter. [r235145](http://reviews.llvm.org/rL235145). ## Clang commits * Clang learned `-Wrange-loop-analysis`, which will warn when a range-based for loop makes copies of elements in the range. [r234804](http://reviews.llvm.org/rL234804). * The `preserve-bc-uselistorder` option is no longer true by default, but Clang will set it for `-emit-llvm` or `-save-temps`. [r234920](http://reviews.llvm.org/rL234920). * LLVM has had a lot of changes to the debug API in the last week. This commit updates Clang for them. [r235112](http://reviews.llvm.org/rL235112). ## Other project commits * Reducing the amount of template use in LLD has reduced the size of AArch64TargetHandler.cpp.o to 4.1MB, down from 21MB. [r234808](http://reviews.llvm.org/rL234808), [r234931](http://reviews.llvm.org/rL234931). * A large patchset has landed in lldb which adds a big chunk of the work necessary for supporting lldb on ARM. [r234870](http://reviews.llvm.org/rL234870).