LLVM Weekly - #139, Aug 29th 2016
Welcome to the one hundred and thirty-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. Subscribe to future issues at https://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.
News and articles from around the web
It's a Bank Holiday here in the UK and for once it seems the weather is pretty good. Perhaps you're looking to get away from LLVM hacking and sit down with a good book? Gabriel Hjort Blindell (from KTH) has you covered with his book on instruction selection. As well as being available in printed and ebook form from Springer, you can grab the author-final PDF version here for free. "This book presents a comprehensive, structured, up-to-date survey on instruction selection. The survey is structured according to two dimensions: approaches to instruction selection from the past 45 years are organized and discussed according to their fundamental principles and according to the characteristics of the supported machines instructions."
The release of LLVM and Clang 3.9 is inching ever closer. Binaries for Release Candidate 3 are now available. Hans Wennborg hopes a final release will happen this week.
The deadline for paper submissions at the LLVM in HPC workshop have been extended by one week. The deadline is moved from September 1st to September 8th. Talk submission for the 2016 LLVM Developers' Meeting closed last week. The inaugural LLVM Cauldron will be taking place in Hebden Bridge next week, on Thursday the 8th September. Our talk lineup has been announced, so please take a look and register if you'd like to attend. We are still accepting last minute proposals for birds of a feather sessions or lightning talks.
llvmlite 0.13.0 has been released. llvmlite is a light-weight Python binding for LLVM, originally created for the needs of Numba. The new release supports LLVM 3.8.
Neil Henning has written a blog post about hooking up the mpc micro parser combinator library to LLVM. In it, he describes parsing and compiling a simple toy language 'neil'. More blog posts are promised in the series.
MongoDB Engineering have written up a series of three blog posts about reformatting a large codebase using clang-format.
Christian S. Perone has written an article on how to JIT TensorFlow graphs using LLVM and Python.
On the mailing lists
-
Jessica Paquette has been interning at Apple over the summer, working on a function outlining pass. She is now seeking feedback on upstreaming it. This pass works to reduce total program size by finding sequences of instructions that could be moved to a separate function. It currently operates at the Machine IR level. Quentin Colombet offers some useful insight in to why this works on MIR rather than LLVM IR.
-
Google Summer of Code is coming to an end, and so we're starting to see some end-of-project reports posted. See Jia Chen's report on CFL-AA, Vivek Pandya's on interprocedural register allocation, or Roman Gareev's on vectorisation in Polly.
-
Ed Maste has given an update on linking FreeBSD kernel and userland using LLD. It is now usable for amd64, but more work is needed for other archs such as ARM, AARch64, i386, and MIPS.
-
Chris Bieneman has shared an update on adding an LLVM runtimes directory. The runtimes directory is now supported for building compiler-rt and libcxx. Chris has shared a rough roadmap and indicates it is now in a state where people can give it a test drive.
-
Dean Michael Berris has posted an RFC on tooling for XRay trace analysis. He describes a tool he has written,
llvm-xray
. -
Kavon Farvardin has posted a heads-up about an upcoming stackmap version change. The stackmap version number will be bumped with the new format in order to address a major deficiency (the inability to associate call sites with their functions).
-
Elena Lepilkana has shared an update on the implementation of proposed FileCheck enhancements.
-
Duncan P. N. Exon Smith is planning to change the invalidation semantics for
ilist::reverse_iterator
and is keen for anyone with out-of-tree code relying on the strange existing semantics to test if they are affected. -
Geoff Berry triggered an in-depth discussion on the semantics of invariant.load metadata.
-
Discussion continues about the proposed merging of the AAP and RISC-V backends. For RISC-V, I've updated the patch set in response to all initial feedback. The response so far appears to be positive. For AAP, there are some questions about how large the target community is. Further responses point out how AAP's attempt to be representative of a number of proprietary out-of-tree targets perhaps means it should be treated as a special case.
LLVM commits
-
Work on coroutines has reached a new milestone. With the addition of the coroutine frame building algorithm, simple coroutines can be compiled. r279609.
-
Documentation on using
-opt-bisect-limit
to debug optimisation errors has been added. r279881. -
libFuzzer's recently added value profiling support has now been documented. r279587.
-
The Lanai backend is no longer experimental, and so is built as one of the default targets. r279498.
-
The NoPHIs property for MachineFunction has been added. This indicates there are no PHI instructions in the MachineFunction. r279573.
Clang commits
-
A new clang-tidy check,
readability-non-const-parameter
will warn when adding const to a function parameter would make the interface safer. r279507. -
-f-diagnostics-absolute-paths
is now supported, which will print absolute paths in diagnostics. r279827.
Other project commits
-
AddressSanitizer started to gain some support for releasing freed memory back to the OS using madvise. r279887.
-
An initial per-thread in-memory logging implementation for use with XRay has been written. r279805.
-
LLDB now has a CMake option that indicates whether to use the builtin demangler or not. r279808.