LLVM Weekly - #45, Nov 10th 2014
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. 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.
The canonical home for this issue can be found here at llvmweekly.org.
News and articles from around the web
Adrian Sampson has posted a status update on his Quala project 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. Interestingly, Dylan doesn't link with the LLVM libraries and instead generates bitcode files directly.
The Numba project has released 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.
On the mailing lists
Arnaud A. de Grandmaison kicked off a discussion on the semantics of lifetime.start and lifetime.end intrinsics. 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. He also clarifies what he means by stack colouring. 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. 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.
Volodymyr Kuznetsov and his collaborators are asking for feedback on their patchset to implement their recently published work on control flow hijacking protection. The OSDI paper is available here. 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. 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, r221293.
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.
Hexagon gained a basic ELF object emitter. r221465.
llvm-vtabledump gained support for the Itanium ABI. r221133.
LLVM's CMake build system gained the
LLVM_BUILD_STATIC
option. r221345.The usage of Inputs/ for extra test files has been documented. r221406.
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.
Clang commits
clang-format gained various improvements for formatting Java code. r221104, r221109, and others.
Support was added for C++1z nested namespace definitions, u8 character literals, and attributes on namespaces or enumerators. r221574, r221576, r221580.
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.
The common Sanitizer code gained a generic stack frame renderer. This allows the user to control the format of stack frame output. r221409, r221469.
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.
lldb-gdbserver now supports the Android target. r221570.