[llvm-dev] LLVM Weekly - #108, Jan 25th 2016

Alex Bradbury via llvm-dev
Mon, 25 Jan 2016 11:57:31 -0000

LLVM Weekly - #108, Jan 25th 2016
================================
If you prefer, you can read a HTML version of this email at
<http://llvmweekly.org/issue/108>.

Welcome to the one hundred and eighth 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.


## News and articles from around the web

LLVM 3.8 RC1 [has been
released](http://lists.llvm.org/pipermail/llvm-dev/2016-January/094433.html).
Now is the time to test it out with your favourite projects and report any
issues.

The deadline for the [EuroLLVM call for
papers](http://lists.llvm.org/pipermail/llvm-dev/2016-January/094371.html) is
today.

Version 1.6 of the Rust programming language [was
released](http://blog.rust-lang.org/2016/01/21/Rust-1.6.html) las week. Rust
uses LLVM for its code generation.

The LLVM Social in Paris [will be held this
week](http://lists.llvm.org/pipermail/llvm-dev/2016-January/094370.html) on
Wednesday.


## On the mailing lists

* Quentin Colombet has posted an RFC [asking for views on adding a kind of
MachineModulePass](http://lists.llvm.org/pipermail/llvm-dev/2016-January/094426.html).
Questions include who would be interested and why. John Criswell's
[response](http://lists.llvm.org/pipermail/llvm-dev/2016-January/094444.html)
includes some interesting use-cases.

* Eduard-Mihai Burtescu has posted an RFC on [making byval argument passing
work with opaque
pointers](http://lists.llvm.org/pipermail/llvm-dev/2016-January/094204.html).

* Quentin Colombet has posted an RFC seeking opinions on the [contract between
LLVM IR and the backends for instruction
selection](http://lists.llvm.org/pipermail/llvm-dev/2016-January/094411.html).
In particular, should backends be able to perform instruction selection on any
valid LLVM IR. Several people have fed back that in practical terms, a backend
doesn't need to be able to select any instruction as long as it provides IR
to
IR transformations that can perform necessary modifications prior to
instruction selection.

* Jonas Wagner is looking for feedback on how to support [self-modifying
branches in
LLVM](http://lists.llvm.org/pipermail/llvm-dev/2016-January/094192.html). The
thread contained some interesting discussion about the [cost of well-predicted
branches](http://lists.llvm.org/pipermail/llvm-dev/2016-January/094340.html).
It would certainly seem worthwhile to delve deeper to see how much of the
overhead is due to limitations in LLVM's basic block at-a-time instruction
scheduler.

* Philip Reames has written to the list to warn users of the
RewriteStatePointsForGC [that there are currently issues expressing arbitrary
exceptional control
flow](http://lists.llvm.org/pipermail/llvm-dev/2016-January/094411.html). The
thread discusses some potential solutions to the current issues.

* Ed Maste has been working to use libunwind in FreeBSD's base system, and
[queries its stack
usage](http://lists.llvm.org/pipermail/llvm-dev/2016-January/094202.html).
LLVM's libunwind allows for 120 saved registers on all architectures, while
in
contrast the GCC unwinder has a target-dependent maximum (it's 18 on
x86-64).


## LLVM commits

* `llvm::SplitModule` gained a new flag which can be used to cause it to
attempt to split the module without globalizing local objects.
[r258083](http://reviews.llvm.org/rL258083).

* The WebAssembly backend will now rematerialize constants with multiple uses
rather than holding them live in registers, as there is no code size saving in
using registers in for constants in most cases in the WebAssembly encoding.
[r258142](http://reviews.llvm.org/rL258142).

* Some small patches from the global instruction selection effort have started
to land, such as the introduction of a generic machine opcode for ADD
(`G_ADD`) and the all-important CMake support for building it.
[r258333](http://reviews.llvm.org/rL258333),
[r258344](http://reviews.llvm.org/rL258344).

* `getCacheLineSize` was added to TargetTransformInfo. It's currently only
used by PPCLoopDataPrefetch. [r258419](http://reviews.llvm.org/rL258419).

* LoopIdiomRecognize improved in its ability to recognise memsets.
[r258620](http://reviews.llvm.org/rL258620).


## Clang commits

* A number of new AST matchers were added.
[r258042](http://reviews.llvm.org/rL258042),
[r258072](http://reviews.llvm.org/rL258072), and more.

* The LeakSanitizer documentation has been updated with a usage example.
[r258476](http://reviews.llvm.org/rL258476).


## Other project commits

* The new ELF linker gained initial support for MIPS local GOT (global offset
table) entries. [r2583888](http://reviews.llvm.org/rL2583888).

* The LLVM test suite now contains a ClangAnalyzer subdirectory containing
tests for the static analyzer. [r258336](http://reviews.llvm.org/rL258336).