[llvm-dev] LLVM Weekly - #151, Nov 21st 2016

Alex Bradbury via llvm-dev llvm-dev at lists.llvm.org
Mon Nov 21 05:33:19 PST 2016


LLVM Weekly - #151, Nov 21st 2016
=================================

If you prefer, you can read a HTML version of this email at
<http://llvmweekly.org/issue/151>.

Welcome to the one hundred and fifty-first 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

Videos of talks at recent LLVM Dev Meeting are now
[making their way on to
Youtube](https://www.youtube.com/channel/UCv2_41bSAa5Y_8BacJUZfjQ).

You may be be interested, amazed, and/or horrified to learn of
[constexpr-8cc](https://github.com/kw-udon/constexpr-8cc). It provides a
compile-time C compiler implemented as C++14 constant expressions.

The European LLVM Developers Conference (aka EuroLLVM) has been
[announced](http://lists.llvm.org/pipermail/llvm-dev/2016-November/107082.html).
It will be held March 27th-28th in Saarbr├╝cken, Germany. The call for papers
is open from now until January 27th.


## On the mailing lists

* Davide Italiano has proposed NewGVN, [a new global value numbering
pass](http://lists.llvm.org/pipermail/llvm-dev/2016-November/107110.html). The
motivation is to improve run-time performance of the pass. The proposed NewGVN
currently has some limitations, but the code already exists to fix most of
these.

* Dylan McKay has
[announced](http://lists.llvm.org/pipermail/llvm-dev/2016-November/107177.html)
that the AVR backend has now been completely merged. Congratulations to Dylan
and all contributors.

* Mandeep Singh Grang has been [tracking down cases of non-determinism in LLVM
codegen](http://lists.llvm.org/pipermail/llvm-dev/2016-November/107098.html).
A common cause is the iteration of unordered containers. Many such cases can
be uncovered by forcing reverse iteration of these containers and seeing if
codegen changes. An initial set of issues have been identified and patches
submitted, next steps include repeating this exercise for other containers
(such as DenseMap) and integrating testing for this in to lit.

* Omer Paparo Bivas has proposed a new [nop insertion
pass](http://lists.llvm.org/pipermail/llvm-dev/2016-November/107223.html) for
X86. As described in the email, inserting these nops can improve performance
by modifying the code layout.

* Mehdi Amini has posted an [RFC on checking for ABI breakage in an LLVM
assert vs release
build](http://lists.llvm.org/pipermail/llvm-dev/2016-November/107148.html).

* The
[deadline](http://lists.llvm.org/pipermail/llvm-dev/2016-November/107294.html)
to submit patches for the 3.9 branch (to be part of 3.9.1) is today.

* Gerolf Hoflehner has proposed
[CTMark](http://lists.llvm.org/pipermail/llvm-dev/2016-November/107087.html),
a small set of compiler inputs intended to track compile-time regressions.


## LLVM commits

* A machine scheduler was added for the Cortex-R52.
[r286949](http://reviews.llvm.org/rL286949).

* BPF's textual assembly format now matches that used by the kernel verifier.
[r287300](http://reviews.llvm.org/rL287300).

* For most backends, it will now be checked that emitted instructions meet
their predicates. [r287439](http://reviews.llvm.org/rL287439).

* The llvm-cxxfilt tool now supports reading from stdin.
[r286777](http://reviews.llvm.org/rL286777).

* TableGen gained a new `!or` operator.
[r286936](http://reviews.llvm.org/rL2869360).

* The AArch64 backend will lower multiplication by an appropriate constants to
shl+add+shl. [r287019](http://reviews.llvm.org/rL287019).

* AddressSanitizer gained support for constant-masked loads and stores.
[r287047](http://reviews.llvm.org/rL287047).

* The ELF.h header has moved to using the new `Expected<T>` error handling.
[r287081](http://reviews.llvm.org/rL287081).

* A fairly large AVRExpandPseudoInsts pass has landed. The pseudo instructions
are needed to work around LLVM's assumption that all integers with the same
size as the pointer size are legal.
[r287162](http://reviews.llvm.org/rL287162).

* A BPF disassembler has been added.
[r287477](http://reviews.llvm.org/rL287477).


## Clang commits

* The include-fixer tool has been refactored to make it usable as a plugin.
[r287228](http://reviews.llvm.org/rL287228).

* A new warning has been added, which triggers when assigning enums to
bitfields without an explicit unsigned type. This is a portability issue for
programs that might be compiled using the MS ABI.
[r287177](http://reviews.llvm.org/rL287177).

* Clang gained support for the `-dI` flag, which outputs include directives in
addition to the result of preprocessing.
[r287275](http://reviews.llvm.org/rL287275).

* The clang-move tool now supports moving functions.
[r287101](http://reviews.llvm.org/rL287101).


## Other project commits

* Reducing the number of tasks in `parallel_for_each` in LLD has significantly
sped up the lld self-link benchmark. For lld with debug info, it has gone from
6.23 seconds to 4.62 seconds. [r287140](http://reviews.llvm.org/rL287140).

* LLD's `-threads` command-line options is now enabled by default.
[r287237](http://reviews.llvm.org/rL287237).

* ThreadSanitizer now supports C++ exceptions.
[r286894](http://reviews.llvm.org/rL286894).


More information about the llvm-dev mailing list