LLVM Weekly - #58, Feb 9th 2015 ============================== If you prefer, you can read a HTML version of this email at <http://llvmweekly.org/issue/58>. Welcome to the fifty-ninth 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 The Red Hat developer blog has a post about the plan to [change the G++ ABI along with GCC 5](http://developerblog.redhat.com/2015/02/05/gcc5-and-the-c11-abi/). This is required for full C++11 compatibility. Unlike the last ABI change where the libc++ 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](http://blog.quarkslab.com/turning-regular-code-into-atrocities-with-llvm.html). ## On the mailing lists * It is currently planned to [raise the LLVM minimum required MSVC to 2013](http://article.gmane.org/gmane.comp.compilers.llvm.devel/81596). 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](http://article.gmane.org/gmane.comp.compilers.llvm.devel/81659) 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](http://article.gmane.org/gmane.comp.compilers.llvm.devel/81923). 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](http://article.gmane.org/gmane.comp.compilers.llvm.devel/81945). * James Molloy has posted an RFC on [inlining of recursive functions](http://article.gmane.org/gmane.comp.compilers.llvm.devel/81848). * Chris Bieneman has summarised progress on brining the [CMake buildsystem to the point it can replace autoconf](http://article.gmane.org/gmane.comp.compilers.llvm.devel/81741) in LLVM/Clang. * Karthik Bat has posted an [RFC on adding a LoopInterchange pass to LLVM](http://article.gmane.org/gmane.comp.compilers.llvm.devel/81854). 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](http://reviews.llvm.org/rL228016). * 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](http://reviews.llvm.org/rL227752). * The BasicAA will now try to disambiguate GetElementPtr through arrays of structs into different fields. [r228498](http://reviews.llvm.org/rL228498). * Work on improving support in LLVM for GC continues, with the addition of a pass for inserting safepoints into arbitrary IR. [r228090](http://reviews.llvm.org/rL228090). * (Very) minimal support for the newly announced ARM Cortex-A72 landed. For now, the A72 is modeled as an A57. [r228140](http://reviews.llvm.org/rL228140). * 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](http://reviews.llvm.org/rL228265). * A pass to exploit PowerPC's pre-increment load/store support has been added. [r228328](http://reviews.llvm.org/rL228328). * A platform-independent interface to a PDB reader has landed. [r228428](http://reviews.llvm.org/rL228428). * LLVM learnt to recognise masked gather and scatter intrinsics. [r228521](http://reviews.llvm.org/rL228521). ## Clang commits * Clang learnt the 'novtable' attribute (for MS ABI support). [r227796](http://reviews.llvm.org/rL227796), [r227838](http://reviews.llvm.org/rL227838). * New functionality has been added for thread safety analysis, before/after annotations can now be used on mutexes. [r227997](http://reviews.llvm.org/rL227997). ## Other project commits * A whole bunch of work on LLDB with multithreaded applications on Linux has landed. [r227909](http://reviews.llvm.org/rL227909), [r227912](http://reviews.llvm.org/rL227912), [r227913](http://reviews.llvm.org/rL227913), 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](http://reviews.llvm.org/rL228193).