LLVM Weekly - #45, Nov 10th 2014
==============================
If you prefer, you can read a HTML version of this email at
<http://llvmweekly.org/issue/45>.
Welcome to the forty-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.
## News and articles from around the web
Adrian Sampson has posted a [status update on his Quala
project](http://homes.cs.washington.edu/~asampson/blog/quala-codegen.html) to
add custom type annotations to C and C++ in Clang/LLVM.
Bruce Mitchener has posted to the Dylan blog describing [how Dylan integrates
with LLVM](http://dylanfoundry.org/2014/11/05/integrating-with-llvm/).
Interestingly, Dylan doesn't link with the LLVM libraries and instead
generates bitcode files directly.
The Numba project has released [llvmlite](https://github.com/numba/llvmlite),
lightweight python bindings to LLVM for writing JIT compilers. This was
developed based on experience using the old llvmpy bindings.
Obfuscator-LLVM [has been updated to work with LLVM
3.5](https://twitter.com/ollvm/status/529687887529656321).
## On the mailing lists
* Arnaud A. de Grandmaison kicked off a discussion on [the semantics of
lifetime.start and lifetime.end
intrinsics](http://article.gmane.org/gmane.comp.compilers.llvm.devel/78544).
Right now, if lifetime intrinsics are enabled for smaller objects a
self-hosted build is broken. The question is whether this is due to a
misunderstanding of the lifetime spec or just a hidden bug. Reid Kleckner
[suggests different intrinsics for the simple case of stack allocated
data](http://article.gmane.org/gmane.comp.compilers.llvm.devel/78568). He also
clarifies what he means by [stack
colouring](http://article.gmane.org/gmane.comp.compilers.llvm.devel/78619).
This is followed by some in-depth back-and-forth discussion on the validity of
transformations involving lifetime.start/lifetime.end and whether new
intrinsics are required.
* James Molloy has been experimenting with the scheduling model on the
Cortex-A57 and [found some
oddities](http://article.gmane.org/gmane.comp.compilers.llvm.devel/78492). I
noted the MicroOpBufferSize is currently set to 128, and reducing it right
down to 2 seems to have no effect. Andrew Trick responded with some suggetions
on [implementing a custom scheduling
strategy](http://article.gmane.org/gmane.comp.compilers.llvm.devel/78603).
* Volodymyr Kuznetsov and his collaborators are [asking for feedback on their
patchset to implement their recently published work on control flow hijacking
protection](http://article.gmane.org/gmane.comp.compilers.llvm.devel/78512).
The OSDI paper is [available here](http://dslab.epfl.ch/pubs/cpi.pdf). The
current patchset covers the stack protection aspect of the paper, providing
stronger protection than stack cookies at a lower overhead.
* Frédéric Riss is interested in [reimplementing Darwin's dsymutil as an lld
helper](http://article.gmane.org/gmane.comp.compilers.llvm.devel/78706).
dsymutil is a standalone DWARF linker which is used to load merge and optimize
dwarf debug info and write it out to a .dSYM file.
## LLVM commits
* The PBQP register allocator has had its spill costs and coalescing benefits
tweaked. This apparently results in a few percent improvement on benchmarks
such as EEMBC and SPEC. [r221292](http://reviews.llvm.org/rL221292),
[r221293](http://reviews.llvm.org/rL221293).
* The new SymbolRewriter pass is an IR to IR transformation allowing
adjustment of symbols during compilation. It is intended to be used for symbol
interpositioning in sanitizers and performance analysis tools.
[r221548](http://reviews.llvm.org/rL221548).
* Hexagon gained a basic ELF object emitter.
[r221465](http://reviews.llvm.org/rL221465).
* llvm-vtabledump gained support for the Itanium ABI.
[r221133](http://reviews.llvm.org/rL221133).
* LLVM's CMake build system gained the `LLVM_BUILD_STATIC` option.
[r221345](http://reviews.llvm.org/rL221345).
* The usage of Inputs/ for extra test files has been documented.
[r221406](http://reviews.llvm.org/rL221406).
* The MIPS backend has reached a milestone in support for the N32/N64 ABI.
This commit fixes all known bugs for this ABI and the first 10000 tests
generated by ABITest.py pass. [r221534](http://reviews.llvm.org/rL221534).
## Clang commits
* clang-format gained various improvements for formatting Java code.
[r221104](http://reviews.llvm.org/rL221104),
[r221109](http://reviews.llvm.org/rL221109), and others.
* Support was added for C++1z nested namespace definitions, u8 character
literals, and attributes on namespaces or enumerators.
[r221574](http://reviews.llvm.org/rL221574),
[r221576](http://reviews.llvm.org/rL221576),
[r221580](http://reviews.llvm.org/rL221580).
## Other project commits
* LLD learned how to parse most linker scripts. Before getting too excited, do
note this is parsing only, semantic actions will come in the future.
[r221126](http://reviews.llvm.org/rL221126).
* The common Sanitizer code gained a generic stack frame renderer. This
allows the user to control the format of stack frame output.
[r221409](http://reviews.llvm.org/rL221409),
[r221469](http://reviews.llvm.org/rL221469).
* The basic framework for live debugging on Windows was added to LLDB. It will
detect changes such as DLL loads and unloads etc, but these need to be
propagated through LLDB properly. [r221207](http://reviews.llvm.org/rL221207).
* lldb-gdbserver now supports the Android target.
[r221570](http://reviews.llvm.org/rL221570).