LLVM Weekly - #106, Jan 11th 2016
Welcome to the one hundred and sixth 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.
Many readers may be interested that last week was the 3rd RISC-V Workshop. You can find slides from the two lowRISC talks here and here. You may also want to read my liveblog of the event.
News and articles from around the web
The BSD Now podcast recently interviewed Alex Rosenberg about his work on LLVM/Clang and FreeBSD.
The folks at QuarksLab have shared a Clang hardening cheat sheet.
LLDB 3.8 will feature initial Go debugging support.
The next Paris LLVM Social will be held on January 27th and includes a talk from John Regehr.
The next Zurich LLVM Social will be taking place on January 14th.
On the mailing lists
One long discussion on the lists this week was regarding the design of the new LLD ELF and COFF linkers. Rui Ueyama notes that they are currently designed as commands instead of libraries. e.g. exit() on failure is considered appropriate. Chandler Carruth argues strongly that supporting a library interface is important for any project under the LLVM umbrella. There ultimately seems to be agreement that the ability to use the linker as a library is important for some use cases, but also that the person doing the work (Rui) should be able to go about development in the way that makes most sense to him. He intends to focus first on reaching feature parity with the GNU linker, and then look at issues such as the library interface.
There's been some discussion in the thread on the new global instruction selection implementation about the semantics of inttoptr and ptrtoint. Specifically whether the currently specified semantics are appropriate for architectures where converting between integers and pointers is not a no-op. It looks like Philip Reames, David Chisnall, and others should share an RFC on this issue in the following weeks.
Matthew Arsenault asks about TargetTransformInfo getOperationCost. Hal Finkel points out the problems Matt is seeing are likely down to there being two cost models. One used for vectorization, and one used for inlining and unrolling.
James Byerly has an interesting question about constraint solving and unspillable register classes. He is targetting a custom, seemingly micro-coded architecture and hasn't received any responses so far.
Steve King has shared some thoughts on adding ISD::OPAQUE to complement ISD::BITCAST.
What is the current status of LLDB on Windows? Zachary Turner has written a summary.
Both Xilinx and Microsoft Research Cambridge are advertising intern positions on LLVM-related projects.
LLVM commits
LLVM gained the
-print-funcs
option which can be used to filter IR printing to only certain functions. r256952.The LLVM ADT library gained a new sum type abstraction for pointer-like types and an abstraction for embedding an integer within a pointer-like type. r257282, r257284.
LLVM now recognises the Samsung Exynos M1 core. r256828.
InstCombine learned to expose more constants when comparing getelementptrs (GEPs) by detecting when both GEPs could be expressed as GEPs with the same base pointer. r257064.
SelectionDAGBuilder will set NoUnsignedWrap for an inbounds getelementptr and for load/store offsets. r256890.
AArch64 MachineCombine will now allow fadd and fmul instructions to be reassociated. r257024.
Macro emission in DWARFv4 is now supported. r257060.
llvm-symbolizer gained the
-print-source-context-lines
option to print source code around the line. r257326.
Clang commits
Clang's CMake build system can now perform a multi-stage bootstrap build with profile-guided optimisation. r256873.
Clang's command line frontend learned to handle a whole bunch of
-fno-builtin-*
arguments. r256937.The new ELF LLD linker will now be used for th AMDGPU target. r257175.