LLVM Weekly - #128, June 13th 2016
Welcome to the one hundred and twenty-eighth 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
LDC, a compiler for the D programming language with an LLVM backends has a major release with 1.0.0. The big news with this release is that the frontend is now completely written in D. Congratulations to everyone involved in this release. See the D website for more information about the D programming language.
The minor release LLVM 3.8.1-rc1 has been tagged.
On the mailing lists
Gor Nishanov has shared an RFC on adding support for coroutines to LLVM IR.
Hans Wennborg has shared the release plan for the 3.9 release. This plan would see the release branch created on the 18th of July and the final shipping on the 22nd of August. Hans wonders whether, as with 2.9 and 1.9 the base version number will be incremented (making release 4.0). He'd also like to make LLVM's current release cadence "official" on the website and publicly list people who are currently committed to testing releases.
Chris Bieneman is proposing some changes to the LLVM directory structure. Specifically, adding a 'runtimes' subdirectory and removing the 'projects' subdirectory. Chris has helpfully summarised some of the key feedback and proposed how to move forwards.
Sebastian Pop is trying to get a feel for how many LLVM developers are attending HPCA/PPoPP/CGO in February 2017 in order to estimate potential numbers for an LLVM gathering.
In answer to a question, Krzysztof Parzyszek explains how to use glue values.
Philip Reames provides a handy explanation of what is means for allocations to "escape", be "captured" or be "thread local".
Simon Brand is seeking feedback on how to enhance LLDB to better support HSA applications.
Simon Cook describes how he has set up pseudo-registers representing register locations on a very register-poor architecture.
Vikram TV has shared a proposal on adding a pass that calculates loop cost based on cache data. The prototype patch analyses references to determine which would be in the same cache line. This knowledge can then be used to calculate a more accurate loop cost and. A drawback of the current implementation is it uses a static cache line size.
Sean Silva has kicked off a thread about the intended behaviour of the CGSCC pass manager. This manages passes over strongly connected components of the callgraph.
LLVM commits
Some of the work from the GSoC project on interprocedural register allocation has started to land. A RegUsageInfoCollector analysis was added that collects the list of clobbered registers for a MachineFunction. A new transformation pass was committed which scans the body of a function to find calls and updates the register mask with the one saved by RegUsageInfoCollector. r272403, r272414.
Chapter 2 of the tutorial on building a JIT with ORC has been fleshed out with a rough draft of the text. r271885.
The host CPU detection code for x86 has seen a large refactoring. r271921.
More documentation has been added about LLVM's CodeView support. r272057.
llvm-symbolizer will now be searched for in the same directory as the LLVM or Clang tool being executed. This increases the chance of being able to print pretty backtraces for systems where LLVM tools aren't installed in the $PATH. r272232.
Clang commits
Clang analyzer gained a checker for correct usage of the MPI API in C and C++. r271907.
Documentation was added on avoiding static initializers when using profiling. r272067, r272214.
Other project commits
A hardened allocator, 'scudo' was added to compiler-rt. It attempts to mitigate some common heap-based vulnerabilities. r271968.
Initial support for ARM has landed in LLD. This is just enough to link a hello world on ARM Linux. r271993.
Initial support for AddressSanitizer on Win64 was added. r271915.