LLVM Weekly - #77, Jun 22nd 2015 =============================== If you prefer, you can read a HTML version of this email at <http://llvmweekly.org/issue/77>. Welcome to the seventy-seventh 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. I'll be in California next week for the [second RISC-V workshop](http://riscv.org/workshop-jun2015.html). Me and my colleague Wei will both be giving talks about recent [lowRISC](http://www.lowrisc.org/) progress. Say hi if you're going to be there. I might have some spare time towards the end of the week too if anyone wants to meet up. ## News and articles from around the web [WebAssembly](https://github.com/WebAssembly/design) has been announced. It is a new collaboration between browser vendors to define a new binary executable format that can be used as a compilation target. A good summary is available [here on the emscripten mailing list](https://groups.google.com/forum/#!topic/emscripten-discuss/k-egXO7AkJY). Tilmann Scheller has written up a [pair](http://blogs.s-osg.org/an-introduction-to-accelerating-your-build-with-clang/) [of](http://blogs.s-osg.org/a-conclusion-to-accelerating-your-build-with-clang/) blog posts about improving build times of Clang. He steps through a wide range of generic approaches (using Ninja, ccache, the gold linker, LTO+PGO in the host compiler etc etc) and some specific to Clang/LLVM. The [Cambridge LLVM Social](http://article.gmane.org/gmane.comp.compilers.clang.devel/43303) will be taking place on Wed 24th June, 7.30pm at the Blue. ## On the mailing lists * Dan Gohman has posted an RFC for the [inclusion of a WebAssembly backend in LLVM](http://article.gmane.org/gmane.comp.compilers.llvm.devel/86952). It seems like everyone is in favour of the proposed approach. * Yaxun Li has posted a [revised RFC on adding a SPIR-V target to LLVM](http://article.gmane.org/gmane.comp.compilers.llvm.devel/86950). There still seems to be some push-back on the proposed approach. Chandler Carruth [makes an argument](http://article.gmane.org/gmane.comp.compilers.llvm.devel/86966) that SPIR-V should make use of the existing SelectionDAG legalization layer. * Igor Laevsky is seeking more feedback on adding an [attribute to mark that a function only accesses memory through its arguments](http://article.gmane.org/gmane.comp.compilers.llvm.devel/87017). Philip Reames point out in the thread that this isn't a new concept to LLVM, except right now [such an attribute can only be specified on intrinsics](http://article.gmane.org/gmane.comp.compilers.llvm.devel/87070). * Philip Reames is looking for feedback on his plan to implement [profile-guided inlining](http://article.gmane.org/gmane.comp.compilers.llvm.devel/86984). * Diego Novillo has posted an RFC to enable the [-fprofile-generate and -fprofile-use Clang flags](http://article.gmane.org/gmane.comp.compilers.llvm.devel/86970). Unsurprisingly, people are in favour of supporting these flags for GCC compatibility. ## LLVM commits * Some initial support for 'fault maps' and a `FAULTING_LOAD_OP`, intended for use in a managed language runtime, has been added. The new ImplicitNullChecks pass will fold null checks into nearby memory operations. [r239740](http://reviews.llvm.org/rL239740), [r239743](http://reviews.llvm.org/rL239743). * The [SafeStack](http://dslab.epfl.ch/proj/cpi/) pass to protect against stack-based memory corruption errors has been added. [r239761](http://reviews.llvm.org/rL239761). * All temporary symbols are now unnamed. This saves a small amount of memory. [r240130](http://reviews.llvm.org/rL240130). * There's been some enhancement to the heuristics for switch lowering. [r240224](http://reviews.llvm.org/rL240224). ## Clang commits * The `-fsanitize-trap=` flag has been introduced, which will be used to control if the given sanitizer traps upon detecting an error. [r240105](http://reviews.llvm.org/rL240105). * Appropriate bitsets for use by LLVM's control flow integrity implementation can now be emitted for the Microsoft ABI. [r240117](http://reviews.llvm.org/rL240117). * Kernel AddressSanitizer now has basic support. [r240131](http://reviews.llvm.org/rL240131). * Clang learned to recognise type nullability specifiers. [r240146](http://reviews.llvm.org/rL240146). ## Other project commits * LLDB learnt how to use hardware watchpoints for MIPS. [r239991](http://reviews.llvm.org/rL239991). * Compression support has been added to LLDB's implementation of the gdb-remote protocol. [r240066](http://reviews.llvm.org/rL240066).