Alex Bradbury via llvm-dev
2016-Dec-12 11:14 UTC
[llvm-dev] LLVM Weekly - #154, Dec 12th 2016
LLVM Weekly - #154, Dec 12th 2016 ================================ If you prefer, you can read a HTML version of this email at <http://llvmweekly.org/issue/154>. 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](http://asbradbury.org). 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 at 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](http://samanbarghi.com/blog/2016/12/06/generate-c-interface-from-c-source-code-using-clang-libtooling/). [Psyche-c](http://cuda.dcc.ufmg.br/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](https://llvm-hpc3-workshop.github.io/) from the LLVM in HPC workshop at SC16. Phoronix have produced an updated [performance comparison](http://www.phoronix.com/scan.php?page=article&item=gcc7-clang4-december&num=1) for code generated by LLVM and by GCC. ## On the mailing lists * Rui Ueyama has posted an [LLD status update and performance chart](http://lists.llvm.org/pipermail/llvm-dev/2016-December/107981.html). 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](http://lists.llvm.org/pipermail/llvm-dev/2016-December/107805.html) 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](http://lists.llvm.org/pipermail/llvm-dev/2016-December/107840.html) to one of the major questions raised. Namely, whether poison could be bitwise rather than value-wise. * Pavel Labath [proposes](http://lists.llvm.org/pipermail/lldb-dev/2016-December/011698.html) a new logging mechanism for LLDB. He later [followed up](http://lists.llvm.org/pipermail/lldb-dev/2016-December/011730.html) wit h some proposed changes based on the discussion. * David Blaikie raises an issue with [accurate debug locations for ASAN](http://lists.llvm.org/pipermail/llvm-dev/2016-December/107847.html) and friends. Recent patches intended to improve debug experience may degrade the experience for the sanitizers. [Is it a design flaw](http://lists.llvm.org/pipermail/llvm-dev/2016-December/107854.html) to have sanitizers rely on accurate debug information, which by its nature is best-effort? Kostya Serebryany [points out](http://lists.llvm.org/pipermail/llvm-dev/2016-December/107885.html) 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](http://lists.llvm.org/pipermail/llvm-dev/2016-December/107918.html). The motivation is to improve performance, including in O0 builds. Philip Reames [has doubts](http://lists.llvm.org/pipermail/llvm-dev/2016-December/107951.html) 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](http://reviews.llvm.org/rL289382). * `!absolute_symbol` metadata was introduced and is used by the X86 backend. [r289087](http://reviews.llvm.org/rL285806). * The lit testing tool now supports custom parsers, which can be used to recognise new keywords beyond RUN, REQUIRES etc. [r288694](http://reviews.llvm.org/rL288694). * 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](http://reviews.llvm.org/rL288859). * 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](http://reviews.llvm.org/rL288980). * A DWARF generator was added to enable the unit testing of DWARF APIs with gtest. [r289010](http://reviews.llvm.org/rL289010). * The SelectionDAG learned to expand `[US]MUL_LOHI`. Previously, setting it to expand would just prevent the node from being generated. [r289050](http://reviews.llvm.org/rL289050). * 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](http://reviews.llvm.org/rL289254). * The verifier learned to check TBAA metadata. [r289402](http://reviews.llvm.org/rL289402). ## Clang commits * Clang gained support for non-zero null pointers in C and OpenCL, which is needed for the amdgcn target. [r289252](http://reviews.llvm.org/rL289252). * As a step towards moving support for Objective-C garbage collection from Clang, `-fobj-gc*` command line options have been removed. [r288872](http://reviews.llvm.org/rL288872). * `-Wstrict-prototypes` has been implemented. [r288896](http://reviews.llvm.org/rL288896). ## Other project commits * The beginnings of 'CTMark' (a test/benchmark of compile time) has been added fo the llvm test suite. [r289269](http://reviews.llvm.org/rL289269). * A Thumb1 implementation for uidiv, uidivmod, idivsi3 and `aeabi_idivmod` were added to compiler-rt's builtins. [r288710](http://reviews.llvm.org/rL288710), [r288960](http://reviews.llvm.org/rL288960). * 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](http://reviews.llvm.org/rL288775). * The libc++ test infrastructure was updated to support modules. This makes use of the recently added custom parser functionality in lit. [r288728](http://reviews.llvm.org/rL288728). * The ELF linker symbol table design has been ported to the COFF linker in LLD. [r289280](http://reviews.llvm.org/rL289280).