LLVM Weekly - #151, Nov 21st 2016
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. 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
Videos of talks at recent LLVM Dev Meeting are now making their way on to Youtube.
You may be be interested, amazed, and/or horrified to learn of 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. 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. 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 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. 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 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.
-
The deadline to submit patches for the 3.9 branch (to be part of 3.9.1) is today.
-
Gerolf Hoflehner has proposed CTMark, a small set of compiler inputs intended to track compile-time regressions.
LLVM commits
-
A machine scheduler was added for the Cortex-R52. r286949.
-
BPF's textual assembly format now matches that used by the kernel verifier. r287300.
-
For most backends, it will now be checked that emitted instructions meet their predicates. r287439.
-
The llvm-cxxfilt tool now supports reading from stdin. r286777.
-
TableGen gained a new
!or
operator. r286936. -
The AArch64 backend will lower multiplication by an appropriate constants to shl+add+shl. r287019.
-
AddressSanitizer gained support for constant-masked loads and stores. r287047.
-
The ELF.h header has moved to using the new
Expected<T>
error handling. r287081. -
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.
-
A BPF disassembler has been added. r287477.
Clang commits
-
The include-fixer tool has been refactored to make it usable as a plugin. r287228.
-
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.
-
Clang gained support for the
-dI
flag, which outputs include directives in addition to the result of preprocessing. r287275. -
The clang-move tool now supports moving functions. r287101.
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. -
LLD's
-threads
command-line options is now enabled by default. r287237. -
ThreadSanitizer now supports C++ exceptions. r286894.