[llvm-dev] LLVM Weekly - #85, Aug 17th 2015

Alex Bradbury via llvm-dev llvm-dev at lists.llvm.org
Mon Aug 17 03:20:41 PDT 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).


More information about the llvm-dev mailing list