LLVM Weekly - #121, Apr 25th 2016
Welcome to the one hundred and twenty-first 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
Congratulations to the eight students who have been selected for LLVM projects on Google Summer of Code this year. There's about a month before they start coding. The time between now and then is the 'community bonding period', so please do make them feel welcome.
The preliminary release schedule for LLVM/Clang 3.8.1 has been published. This would have a deadline of May 25th for requesting changes to be merged and would see the final release on June 15th.
On the mailing lists
A series of RFCs have been posted around the idea of adding an EfficiencySanitizer tool. Like the existing sanitizer tools, this would rely on compiler-based dynamic instrumentation in order to detect problems in user code. The goal is to collect userful information with overhead less than 5x, ideally closer to 3x. Separate threads have been started to discuss an EfficiencySanitizer cache fragmentation tool and a working set tool.
Sanjoy Patel has proposed removing the llvm.expect intrinsic, in favour of using metadata to represent the same information. There isn't currently full agreement on this.
Richard Trieu is seeking feedback on which floating point to boolean conversions should trigger warnings.
How do you add fixup information to a MachineInstruction? Tim Northover has the answer.
Elena Lepilkina has shared an RFC on adding support for custom metrics and test parameterisation to LNT. The feedback so far seems positive.
Phil Tomson is looking for advice on instruction scheduling in LLVM. As he notes in his email, it's part of LLVM that's seen a lot of changes over the past 8 years or so. I'm certainly interested in the answer here.
LLVM commits
An implementation of optimisation bisection support has landed. This helps to track down bugs by allowing optimisations to be selectively disabled at compile-time to identify the one introducing a miscompile. r267022.
The AArch64 and ARM thread pointer intrinsics have been merged to make a target-independent
llvm.thread.pointer
intrinsic. r266818.The llvm.load.relative intrinsic has been added. r267233.
There have been more changes to DebugInfo which will require a bitcode upgrade. A script to perform this upgrade is linked in the commit message. r27296.
The ORC JIT API improved its support for RPC, including support for calling functions with return values. r266581.
The patchable-function function attribution has been introduced, indicating that the function should be easily patchable at runtime. r266715.
The IntrReadArgMem intrinsic property has been split in to IntrReadMem and IntrArgMemOnly. r267021.
The MachineCombiner gained the ability to combine AArch64 fmul and fadd in to an fmadd. r267328.
Scheduling itineraries were added for Sparc, specifically for the LEON processors. r267121.
Clang commits
A prototype of an include fixing tool was created. The indexer remains to be written. r266870.
A new warning has been added, which will trigger if the compiler tries to make an implicit instantiation of a template but cannot find the template definition. r266719.
Initial driver flags for EfficiencySanitizer were added. r267059.