LLVM Weekly - #22, Jun 2nd 2014 ============================== If you prefer, you can read a HTML version of this email at <http://llvmweekly.org/issue/22>. Welcome to the twenty-second 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. Last week I expressed worry about GMANE not updating. I'm happy to report that it's back to normal now. Some of my readers might be interested in my [account of the neat Raspberry Pi-based projects I saw at Maker Faire Bay Area](http://www.raspberrypi.org/raspberry-pi-projects-at-the-maker-faire-bay-area/). ## News and articles from around the web David Given has [shared](http://article.gmane.org/gmane.comp.compilers.llvm.devel/73349) his partially complete backend for the VideoCore IV VPU as used in the BCM2835 in the Raspberry Pi. It would also be interesting to see a QPU LLVM backend now it has been [publicly documented](http://www.raspberrypi.org/a-birthday-present-from-broadcom/). Documentation on how TableGen's DAGISel backend works [has been updated](https://github.com/draperlaboratory/fracture/wiki/How-TableGen%27s-DAGISel-Backend-Works). The [LLVM Compiler Infrastructure in HPC Workshop](http://llvm-hpc-workshop.github.io/) has been announced. This is a workshop to be held in conjunction with SC14. The deadline for the call for papers is September 1st. [Tartan](http://people.collabora.com/~pwith/gnome-clang/) is a Clang analysis plugin for GLib and GNOME. To quote its homepage "The plugin works by loading gobject-introspection metadata for all functions it encounters (both functions exported by the code being compiled, if it is a library; and functions called by it). This metadata is then used to add compiler attributes to the code, such as non-NULL attributes, which the compiler can then use for static analysis and emitting extra compiler warnings." ## On the mailing lists * Jack Howarth has posted to ask [what can be done to merge the clang-omp merge along more quickly](http://article.gmane.org/gmane.comp.compilers.clang.devel/36961). Andrey Bokhanko followed up with some [clarifications and elaborations](http://article.gmane.org/gmane.comp.compilers.clang.devel/36974). Hal Finkel has also [more clearly described the OpenMP language support vs the OpenMP runtime library](http://article.gmane.org/gmane.comp.compilers.clang.devel/36981). * Simon Cook posed an interesting question about [a backend with 32-bit registers for load/store but otherwise mostly 16 bit](http://article.gmane.org/gmane.comp.compilers.llvm.devel/73365). Sadly there are no answers yet. * Qiong Cai has a [few questions on LLVM JIT](http://article.gmane.org/gmane.comp.compilers.llvm.devel/73325). Philip Reames [answers concisely](http://article.gmane.org/gmane.comp.compilers.llvm.devel/73339). * Tim Northover [proposes adding load linked and store conditional atomic instructions to LLVM IR](http://article.gmane.org/gmane.comp.compilers.llvm.devel/73355). David Chisnall has a thorough [answer to the proposal](http://article.gmane.org/gmane.comp.compilers.llvm.devel/73413) that suggests weak cmpxchg would be an easier and overall better addition. ## LLVM commits * A LoadCombine pass was added, though is disabled by default for now. [r209791](http://reviews.llvm.org/rL209791). * AAPCS-VFP has been taught to deal with Cortex-M4 (which only has single precision floating point). [r209650](http://reviews.llvm.org/rL209650). * InstructionCombining gained support for combining GEPs across PHI nodes. [r209843](http://reviews.llvm.org/rL209843). * Vectorization of intrinsics such as powi, cttz and ctlz is now allowed. [r209873](http://reviews.llvm.org/rL209873). * MIPS64 long branch has been optimised to be 3 instructions smaller. [r209678](http://reviews.llvm.org/rL209678). ## Clang commits * OpenMP implementation continues. Parsing and Sema have been implemented for OMPAlignedClause. [r209816](http://reviews.llvm.org/rL209816). * The `-Rpass-missed` and `-Rpass-analysis` flags have been added. pass-missed is used by optimizers for inform the user when they tried to apply an optimisation but couldn't, while pass-analysis is used to report analysis results back to the user. A followup commit documents the family of flags. [r209839](http://reviews.llvm.org/rL209839), [r209841](http://reviews.llvm.org/rL209841). * The clang optimize pragma has now been documented. [r209738](http://reviews.llvm.org/rL209738). * There has been some API refactoring. The release and take methods were removed from ActionResult and Owned removed from Sema. [r209800](http://reviews.llvm.org/rL209800), [r209812](http://reviews.llvm.org/rL209812). ## Other project commits * ThreadSanitizer has seem a refactoring of storage of meta information for heap blocks and sync objects. [r209810](http://reviews.llvm.org/rL209810).