LLVM Weekly - #49, Dec 8th 2014 ============================== If you prefer, you can read a HTML version of this email at <http://llvmweekly.org/issue/49>. Welcome to the forty-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](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 Most of the 2014 LLVM Developers' Meeting videos and slides are [now online](http://llvm.org/devmtg/2014-10/index.html). Sadly, there are no videos from the talks by Apple employees yet. Hopefully they'll be appearing later. QuarksLab has a rather nice write-up of [deobfuscating an OLLVM-protected program](http://blog.quarkslab.com/deobfuscation-recovering-an-ollvm-protected-program.html). The LLVM-based ELLCC has been making progress on [ELK, a bare-metal POSIX-like environment](http://ellcc.org/blog/?p=22979). Support for statepoints landed in LLVM this week, and Philip Reames has a blog post detailing [some notes and caveats](http://www.philipreames.com/Blog/2014/12/04/statepoint-patches-have-landed/). See also the mailing list discussion linked to below about future plans for GC in LLVM. ## On the mailing lists * Sami Liedes [shares his workflow for using afl-fuzz with the Clang test suite](http://article.gmane.org/gmane.comp.compilers.llvm.devel/79491). In 11 hours of testing he managed to find 34 distinct assertion failures and at least one segmentation fault. * Duncan P.N. Exon Smith has [shared an updated on his work on the metadata-value split](http://article.gmane.org/gmane.comp.compilers.llvm.devel/79437), detailing the new semantic restrictions this will entail. * Philip Reames has a post [detailing his future plans for GC in LLVM](http://article.gmane.org/gmane.comp.compilers.llvm.devel/79435). Comments are invited. The aim is to eventually delete the existing gcroot lowering code. If you are actively using this, please do speak up. * John Yates, who worked on the compiler for the Apollo Computer's DN10K has [shared a description of how that compiler would have handled one of the recent examples from the Souper work](http://article.gmane.org/gmane.comp.compilers.llvm.devel/79416). * How can you reproduce Clang's `-O3` using `opt`? The [answer](http://article.gmane.org/gmane.comp.compilers.llvm.devel/79367), thanks for Tobias Grosser, is `clang -O3 -mllvm -disable-llvm-optzns` followed by `opt -O3`. * Tobias Grosser is seeking community feedback on [where in the pipeline the Polly loop optimiser should run](http://article.gmane.org/gmane.comp.compilers.llvm.devel/79366). The post is well worth a read for the discussion of expected trade-offs. * Rafael EspĂndola has been working on type merging during LTO and ultimately [proposes moving to a single pointer type in LLVM IR](http://article.gmane.org/gmane.comp.compilers.llvm.cvs/218148). There seems to be positive feedback on the idea, given that pointer types don't convey useful information to the optimizer and don't really provide safety. ## LLVM commits * The statepoint infrastructure for garbage collection has landed. See the final patch in the series for documentation. [r223078](http://reviews.llvm.org/rL223078), [r223085](http://reviews.llvm.org/rL223085), [r223137](http://reviews.llvm.org/rL223137), [r223143](http://reviews.llvm.org/rL223143). * The LLVM assembler gained support for ARM's funky modified-immediate assembly syntax. [r223113](http://reviews.llvm.org/rL223113). * The OCaml bindings now has a CMake buildsystem. [r223071](http://reviews.llvm.org/rL223071). * The PowerPC backend gained support for readcyclecounter on PPC32. [r223161](http://reviews.llvm.org/rL223161). * Support for 'prologue' metadata on functions has been added. This can be used for inserting arbitrary code at a function entrypoint. This was previously known as prefix data, and that term has been recycled to be used for inserting data just before the function entrypoint. [r223189](http://reviews.llvm.org/rL223189). * PowerPC gained a Power8 instruction schedule definition [r223257](http://reviews.llvm.org/rL223257). ## Clang commits * LLVM IR for vtable addresses now uses the type of the field being pointed to, to enable more optimisations. [r223267](http://reviews.llvm.org/rL223267). * New attributes have been added to specify AMDGPU register limits. This is a performance hint that can be used to attempt to limit the number of used registers. [r223384](http://reviews.llvm.org/rL223384). * Clang gained the `__has_declspec_attribute` preprocessor macro. [r223467](http://reviews.llvm.org/rL223467). * `__has_attribute` now only looks for GNU-style attributes. You should be able to use `__has_cpp_atribute` or `__has_declspec_attribute` instead. [r223468](http://reviews.llvm.org/rL223468). ## Other project commits * DataFlowSanitizer is now supported for MIPS64. [r223517](http://reviews.llvm.org/rL223517). * libcxx now supported `std::random_device` on (P)NaCl. [r223068](http://reviews.llvm.org/rL223068). * An effort has started in lld to reduce abstraction around InputGraph, which has been found to get in the way of new features due to excessive information hiding. [r223330](http://reviews.llvm.org/rL223330). The commit has been temporarily reverted due to breakage on Darwin and ELF. * A large chunk of necessary code for Clang module support has been added to LLDB. [r223433](http://reviews.llvm.org/rL223433). * LLDB now has [documented coding conventions](http://lldb.llvm.org/lldb-coding-conventions.html). [r223543](http://reviews.llvm.org/rL223543).