LLVM Weekly - #85, Aug 17th 2015
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. 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@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. I'm also looking for talk submissions.
The canonical home for this issue can be found here at llvmweekly.org.
News and articles from around the web
Videos from April's EuroLLVM are now online.
The deadline for the 2015 LLVM Developer's Meeting call for papers 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.
The Customizable Naming Convention Checker (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 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 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. 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. 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.
Peter Collingbourne has proposed a simple approach to parallelising parallel codegen for link-time optimisation. 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. 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.
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.
Machine basic blocks are now serialized using custom syntax rather than YAML. A later commit documented this syntax. r244982, r245138.
A new TargetTransformInfo hook has been added for specifying per-target defaults for interleaved accesses. r244449.
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.
Rudimentary support for the new Windows exception handling instructions has been introduced. r244558.
Token types have been added to LLVM IR. r245029.
The BPF backend gained documentation and an instruction set description. r245105.
Clang commits
The WebKit brace style is now supported by clang-format. r244446.
Other project commits
Statistics collection in the OpenMP runtime has been tidied up and expanded. r244677.