Alex Bradbury via llvm-dev
2018-Apr-16 08:55 UTC
[llvm-dev] LLVM Weekly - #224, Apr 16th 2018
LLVM Weekly - #224, Apr 16th 2018 ================================ If you prefer, you can read a HTML version of this email at <http://llvmweekly.org/issue/224>. Welcome to the two hundred and twenty-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](https://www.linkedin.com/in/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 at asbradbury.org>, or @llvmweekly or @asbradbury on Twitter. EuroLLVM is going on today and tomorrow. I'll hopefully see many of you there. ## News and articles from around the web The latest set of papers for the C++ Standards Committee is [now available](https://www.reddit.com/r/cpp/comments/8bb2fv/c_standards_committee_papers_201804/). ## On the mailing lists * Robin Kruppe has written an [RFC on supporting the proposed RISC-V Vector extension in LLVM](http://lists.llvm.org/pipermail/llvm-dev/2018-April/122517.html). This requires representing a hardware vector length that is unknown at compile time, and may change at runtime. Robin is presenting a lightning talk based on this proposal at EuroLLVM and is keen to discuss further. * Mostyn Bramley-Moore shared [work on supporting 'Jumbo'/unity builds with Clang](http://lists.llvm.org/pipermail/cfe-dev/2018-April/057579.html). The proof of concept clang plugin gives unique name to anonymous namespaces and undefs macros defined in each top-level file. This reduces the modifications needed to a large codebase like Clang to support a Jumbo build. Much of the ensuing discussions focus on the merits of Jumbo/unity builds vs Clang header modules. * Greg Clayton has given a [detailed summary](http://lists.llvm.org/pipermail/lldb-dev/2018-April/013536.html) of the design principles of the ncurses-based LLDB 'GUI', as well as things he would like to see changed. * Mandeep Singh Grang [reports](http://lists.llvm.org/pipermail/llvm-dev/2018-April/122576.html) that a new llvm::sort wrapper function has been introduced. For an `EXPENSIVE_CHECKS` build this will randomly shuffle the container before sorting, which helps to uncover non-deterministic sorting of objects with the same key. * Katya Romanova has started a [discussion](http://lists.llvm.org/pipermail/llvm-dev/2018-April/122469.html) on unifying the bitcode file generation phase for ThinLTO and FullLTO, producing a 'unified' bitcode format. Mehdi Amini [proposed](http://lists.llvm.org/pipermail/llvm-dev/2018-April/122509.html) a change in the compilation flow that might meet some of Katya's requirements. ## LLVM commits * The X86 backend now has a new pass for lowering COPY nodes of EFLAGS. This preserves the necessary state in a GPR rather than using pushf/popf. [r329657](https://reviews.llvm.org/rL329657). * The RISC-V backend gained support for codegen for the RV32D (double-precision floating point) standard instruction set extension. [r329871](https://reviews.llvm.org/rL329871), [r329874](https://reviews.llvm.org/rL329874), and more. * MIPS GlobalISel now has the minimal support necessary to lower a function that returns the sum of two i32 values. [r329819](https://reviews.llvm.org/rL329819). * The newly added InitLLVM class was added to perform common initialization functions needed before using LLVM APIs. [r330046](https://reviews.llvm.org/rL330046). * llvm-mca gained the ability to recognise comments marking regions of code for analysis. [r329590](https://reviews.llvm.org/rL329590). * A partial demangling ABI was added, for use with LLDB. This allows propertie of a demangled name to be queried. [r329951](https://reviews.llvm.org/rL329951). * The Mips backend will now estimate the cost of generating a shifts+adds+subs for a constant multiplication and generate the multiply if it is too high. [r330037](https://reviews.llvm.org/rL330037). ## Clang commits * The `__builtin_dump_struct` builtin will, as the name suggests, dump structure contents at runtime. [r329762](https://reviews.llvm.org/rL329762). * The `-Wreturn-std-move` and `-Wreturn-std-move-in-c++11` diagnostics (off by default) warn when `return x` should be `return std::move(x)` for efficiency. [r329914](https://reviews.llvm.org/rL329914). * Clang toolchain drivers can now added multiple libc++ include paths. [r329748](https://reviews.llvm.org/rL329748). ## Other project commits * LLDB learned a new 'statistics' command, which collects metrics about a debugging session such as the number of successful/unsucessful expression evaluations. [r330043](https://reviews.llvm.org/rL330043). * The `--warn-backrefs` flag to lld will detect reverse or cyclic dependences between static archives. [r329636](https://reviews.llvm.org/rL329636).