LLVM Weekly - #58, Feb 9th 2015
Welcome to the fifty-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. 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
The Red Hat developer blog has a post about the plan to change the G++ ABI along with GCC 5. This is required for full C++11 compatibility. Unlike the last ABI change where the libstdc++ soname was changed, it will stay the same and instead different mangled names will be used for symbols.
Quarks lab have a tutorial on how to add a simple obfuscation pass to LLVM.
On the mailing lists
It is currently planned to raise the LLVM minimum required MSVC to 2013. If you are using MSVC 2012 to build LLVM and this would cause significant hardship to you for some reason, now is the time to speak up.
Chandler Carruth has shared a handy cheatsheet for those maintaining an out-of-tree target on how to adjust to the recent TargetTransformInfo changes.
The idea of dropping pointer types in LLVM IR has been brought up a few times recently. David Blaikie is interested in volunteering to do the necessary work. Much of the ensuing discussion is about how this might be done in an incremental way, without causing too many problems for people with out of tree passes. Chandler Carruth proposes a rough work-plan.
James Molloy has posted an RFC on inlining of recursive functions.
Chris Bieneman has summarised progress on brining the CMake buildsystem to the point it can replace autoconf in LLVM/Clang.
Karthik Bat has posted an RFC on adding a LoopInterchange pass to LLVM. This is a pass targeted at improving performance through cache locality.
LLVM commits
A straight-line strength reduction pass has been introduced. This is intended to simplify statements that are generated after loop unrolling. It is enabled only for NVPTX for the time being. r228016.
A MachineInstruction pass that converts stack-relative moves of function arguments to use the X86 push instruction. This is only enabled when optimising for code size. r227752.
The BasicAA will now try to disambiguate GetElementPtr through arrays of structs into different fields. r228498.
Work on improving support in LLVM for GC continues, with the addition of a pass for inserting safepoints into arbitrary IR. r228090.
(Very) minimal support for the newly announced ARM Cortex-A72 landed. For now, the A72 is modeled as an A57. r228140.
A new heuristic has been added for complete loop unrolling, which looks at what loads might be made constant if the loop is completely unrolled. r228265.
A pass to exploit PowerPC's pre-increment load/store support has been added. r228328.
A platform-independent interface to a PDB reader has landed. r228428.
LLVM learnt to recognise masked gather and scatter intrinsics. r228521.
Clang commits
Clang learnt the 'novtable' attribute (for MS ABI support). r227796, r227838.
New functionality has been added for thread safety analysis, before/after annotations can now be used on mutexes. r227997.
Other project commits
A whole bunch of work on LLDB with multithreaded applications on Linux has landed. r227909, r227912, r227913, and more.
The default Polly build is now completely free of GPL dependencies. The isl and imath dependencies have been imported into the codebase to make it easier to build with a known-good revision. r228193.