LLVM Weekly - #118, Apr 4th 2016
Welcome to the one hundred and eighteenth 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
Almost all slides from the recent EuroLLVM conference are now available online for your enjoyment.
Some readers my be interested in a new paper about the 'LifeJacket' tool for verifying precise floating-point optimisations in LLVM.
Christian Neumüller has written a new tool for syntax highlighting and cross-referencing C and C++ source using libclang.
On the mailing lists
Chandler Carruth suggests that just like commits that break codegen are immediately reverted, commits that introduce large, especially super-linear compile time regressions should be reverted. There's a lot of agreement in the general principle in replies, though some point out that much of the slowdown across the past few LLVM and Clang versions is due to a large number of small changes.
James Molloy is interested in discussing how LLVM could learn the size of a particular std::vector and omit unnecessary checks etc.
Nick Johnson has a couple of questions about IfConversion in LLVM. They haven't been answered yet, but I know I'd be interested in the answer.
Russell Wallace has kicked off a very useful thread about generating calls to existing functions from the JIT.
Zachary Turner is interested in people's feelings on requiring a minimum of MSVC 2015 to compile LLVM and Clang. The general feeling so far is that it's too early for this, as typically the policy is to support the last two major MSVC releases.
Hans Wennborg has kindly highlighted a recent API change to TargetFrameLowering::eliminateCallFramePseudoInstr that will be of interest to maintainers of out-of-tree backends.
Matt Masten has posted an RFC on vectorizing loops with calls to math functions using SVML (Intel's short vector math library).
Eric Christopher has posted an RFC on migrating debug type information generation from the backends to the frontend.
Ke Bai's memory scope proposal hasn't really seen any responses up to now. Philip Reames does share some feedback, but notes it's unlikely this proposal could realistically be merged in to LLVM unless there is more interest. If this is an area that interests you, then please do have a good read of Ke's proposal.
LLVM commits
The Lanai backend has landed. r264578.
A new
llvm.experimental.guard
intrinsic has been added. As described in the accompanying documentation, along with deoptimization operand bundles this allows frontends to express guards or checks on optimistic assumptions made during compilation. r264976.Support for a number of new Altivec instructions has been added. Amazingly, this includes BCD (Binary Coded Decimal) instructions. r264568.
The concept of MachineFunctionProperties has been introduced, with the first property being AllVRegsAllocated. This allows passes to declare that they require a particular property, in this case requiring that they be run after regalloc. r264593.
On X86, push will now be used in preference to mov at all optimisation levels (before it was only enabled for
-Os
). r264966.LLVM's support library can now compute SHA1 hashes. This is used to implement a 'build-id'. r265094, r265095.
When metadata is only referenced in a single function, it will now be emitted just in that function block. The aim of this is to improve the potential of lazy-loading. r265226.
Clang commits
The Lanai backend is now supported in the Clang driver. r264655.
libTooling gained a handy formatAndApplyAllReplacements function. r264745.