LLVM Weekly - #154, Dec 12th 2016
Welcome to the one hundred and fifty-fourth 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
Saman Barghi has written a blog post about generating a C interface to C++ code using Clang's LibTooling.
Psyche-c is an interesting project, providing a compiler for incomplete C code. It includes a Hindley-Milner type inference engine to reconstruct missing type information.
Slides are now available from the LLVM in HPC workshop at SC16.
Phoronix have produced an updated performance comparison for code generated by LLVM and by GCC.
On the mailing lists
-
Rui Ueyama has posted an LLD status update and performance chart. This gives an overview of the progress made on LLD over the past year, which by any measure is impressive.
-
Hans Wennborg has proposed the LLVM/Clang 4.0 release schedule and put out a call for volunteer testers.
-
Nuno Lopes has returned to the discussion on 'killing undef and spreading poison' and now has an answer to one of the major questions raised. Namely, whether poison could be bitwise rather than value-wise.
-
Pavel Labath proposes a new logging mechanism for LLDB. He later followed up wit h some proposed changes based on the discussion.
-
David Blaikie raises an issue with accurate debug locations for ASAN and friends. Recent patches intended to improve debug experience may degrade the experience for the sanitizers. Is it a design flaw to have sanitizers rely on accurate debug information, which by its nature is best-effort? Kostya Serebryany points out that correctness of debug info isn't a hard requirement, but it does affect the readability of reports to users.
-
Reid Kleckner started and RFC on an IR change to allow creating allocas from function parameters. The motivation is to improve performance, including in O0 builds. Philip Reames has doubts about the motivation for the change.
LLVM commits
-
The logic in FileCheck for finding check prefixes in the input file has been reimplemented to be more efficient. r289382.
-
!absolute_symbol
metadata was introduced and is used by the X86 backend. r289087. -
The lit testing tool now supports custom parsers, which can be used to recognise new keywords beyond RUN, REQUIRES etc. r288694.
-
The performance of LowerTypeTests was improved. This reduces the pass runtime on a module containing Chrome's vtables from over 60s to 0.9s. r288859.
-
MachineIRBuilder (part of the in-development GlobalISel infrastructure) has had its interface reworks so it acts much more like IRBuilder, allowing you to insert an instruction before the passed instruction. r288980.
-
A DWARF generator was added to enable the unit testing of DWARF APIs with gtest. r289010.
-
The SelectionDAG learned to expand
[US]MUL_LOHI
. Previously, setting it to expand would just prevent the node from being generated. r289050. -
Tests written in .mir should go in test/CodeGen/YourTarget rather than test/CodeGen/MIR (that folder just contains tests for the MIR infrastructure). r289254.
- The verifier learned to check TBAA metadata. r289402.
Clang commits
-
Clang gained support for non-zero null pointers in C and OpenCL, which is needed for the amdgcn target. r289252.
-
As a step towards moving support for Objective-C garbage collection from Clang,
-fobj-gc*
command line options have been removed. r288872. -
-Wstrict-prototypes
has been implemented. r288896.
Other project commits
-
The beginnings of 'CTMark' (a test/benchmark of compile time) has been added fo the llvm test suite. r289269.
-
A Thumb1 implementation for uidiv, uidivmod, idivsi3 and
aeabi_idivmod
were added to compiler-rt's builtins. r288710, r288960. -
The XRay buffer queue, needed for 'Flight Data Recorder' mode was added. This provides a queue of fixed-sized buffers to hold XRay records. r288775.
-
The libc++ test infrastructure was updated to support modules. This makes use of the recently added custom parser functionality in lit. r288728.
-
The ELF linker symbol table design has been ported to the COFF linker in LLD. r289280.