Alex Bradbury via llvm-dev
2015-Aug-17 10:20 UTC
[llvm-dev] LLVM Weekly - #85, Aug 17th 2015
LLVM Weekly - #85, Aug 17th 2015 =============================== If you prefer, you can read a HTML version of this email at <http://llvmweekly.org/issue/85>. Welcome to the eighty-fifth 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. If you're interested in open source hardware, lowRISC, RISC-V, OpenRISC, and more then consider [joining us at ORConf 2015 in October](http://www.lowrisc.org/blog/2015/08/lowrisc-at-orconf-2015/). I'm also looking for talk submissions. ## News and articles from around the web Videos from April's EuroLLVM [are now online](http://llvm.org/devmtg/2015-04/). The deadline for the 2015 LLVM Developer's Meeting [call for papers](http://article.gmane.org/gmane.comp.compilers.llvm.devel/88488) is rapidly approaching. Get your proposal in by August 20th, 11:59PM PDT. A new paper covering the AST generation techniques used in Polly in great detail has been published in the July issue of TOPLAS. You can read the preprint [here](http://www.grosser.es/publications/grosser-2015--polyhedral-AST-generation-is-more-than-scanning-polyhedra--paper.pdf). The [Customizable Naming Convention Checker (CNCC)](https://github.com/mapbox/cncc/) is a new Clang-based tool that can be used to validate class, field, variable, and namespace naming conventions against a chosen regular expression. [EvilML](http://akabe.github.io/evilml/) is a deliciously terrifying compiler that compiles ML to C++ template language. ## On the mailing lists * With the 3.7 release on its way, it's important to [fix up the release notes](http://lists.llvm.org/pipermail/llvm-dev/2015-August/089235.html) so they reflect the work that's been done over the past six months. * Dylan MacKay proposes making the existing 'expand' action of the instruction selection legalizer [into split and expand](http://lists.llvm.org/pipermail/llvm-dev/2015-August/089172.html). Part of the motivation for this is the author's work on an AVR backend. * Wang Nan has posted an RFC on [adding an llvm.typeid.for intrinsic](http://lists.llvm.org/pipermail/llvm-dev/2015-August/089244.html). This would be used with the BFP backend to specify the type for buffers passed to perf. * Teresa Johnson has posted an [update on her ThinLTO work](http://lists.llvm.org/pipermail/llvm-dev/2015-August/089222.html). * Peter Collingbourne has proposed [a simple approach to parallelising parallel codegen for link-time optimisation](http://lists.llvm.org/pipermail/llvm-dev/2015-August/089136.html). This gives a speedup on a HP Z620 from 15m20s to 8m06s when 4 partitions are used. Speedup beyond that is limited (partially due to Amdahl's law). * Sanjoy Day has shared an RFC for [adding operand bundles to call and invokes](http://lists.llvm.org/pipermail/llvm-dev/2015-August/089070.html). These would be used to help track state required for deoptimization, for instance by attaching a 'deopt' operand bundle to relevant calls which contans the cstate of the abstract virtual machine. ## LLVM commits * MergeFunctions has been sped up substantially by hashing functions and comparing that hash before performing a full comparison. This results in a speedup of 46% for MergeFunctions in libxul and 117% for Chromium. [r245140](http://reviews.llvm.org/rL245140). * i64 loads and stores are now supported for 32-bit SPARC. This is a little fiddly to support as the LDD/STD instructions need a consecutive even/odd pair of 32-bit registers. [r244484](http://reviews.llvm.org/rL244484). * Machine basic blocks are now serialized using custom syntax rather than YAML. A later commit documented this syntax. [r244982](http://reviews.llvm.org/rL244982), [r245138](http://reviews.llvm.org/rL245138). * A new TargetTransformInfo hook has been added for specifying per-target defaults for interleaved accesses. [r244449](http://reviews.llvm.org/rL244449). * The llvm.loop.unroll.enable metadata was introduced. This will cause a loop to be unrolled fully if the trip count is known at compiler time and partially if it isn't (unlike llvm.loop.unroll.full which won't unroll a loop if the trip count isn't known). [r244466](http://reviews.llvm.org/rL244466). * Rudimentary support for the new Windows exception handling instructions has been introduced. [r244558](http://reviews.llvm.org/rL244558). * Token types have been added to LLVM IR. [r245029](http://reviews.llvm.org/rL245029). * The BPF backend gained documentation and an instruction set description. [r245105](http://reviews.llvm.org/rL245105). ## Clang commits * The WebKit brace style is now supported by clang-format. [r244446](http://reviews.llvm.org/rL244446). ## Other project commits * Statistics collection in the OpenMP runtime has been tidied up and expanded. [r244677](http://reviews.llvm.org/rL244677).