[llvm-dev] LLVM Weekly - #224, Apr 16th 2018

Alex Bradbury via llvm-dev llvm-dev at lists.llvm.org
Mon Apr 16 01:55:58 PDT 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).


More information about the llvm-dev mailing list