LLVM Weekly - #162, Feb 6th 2017
Welcome to the one hundred and sixty-second 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
The Quarkslab blog has a new article about improving the performance of global dead code elimination.
Pyston, the LLVM-based JIT for Python has just seen a new release, 0.6.1. Sadly, with Dropbox no longer providing engineering time for the project, its future is in doubt.
On the mailing lists
-
Daniel Berlin has written about his recent work to add support for extended SSA to LLVM.
-
Would it be useful to fuzz LLVM or Clang? As Kostya Serebryany reports, clang-fuzzer and clang-format-fuzzer were run on one of the public buildbots for some time but disabled as the bugs weren't being fixed. More positively, the C++ demangler is being fuzzed in Google's OSS-Fuzz infrastructure.
-
Amara Emerson has shared an RFC on generic IR reductions, especially vector reductions.
-
Dehao Chen suggests changing the default loop unroll threshold, and has collected data on performance and code size changes based on this change.
-
Ahmed Bougacha has a helpful explanation of how GlobalISel can use non-local information.
LLVM commits
-
The MacroFusion class has been moved to the target (so far, implemented by X86 and AArch64). This class is responsible for scheduling instructions to maximise the opportunity for the target processor to fuse them. r293737.
-
The ARM scheduling models are undergoing a refactoring, with the aim to make ARM machine scheduling models for ARM easier to write and more compact. r292825.
-
Certain forms of select for the X86 MCU target will be lowered to bit manipulation instructions. r293469.
-
llvm-readobj now supports WebAssembly. r293569.
-
The loop invariant code motion pass will now hoist loads that are dominated by the invariant.start intrinsic. r293887.
-
The way ELF section symbols are handled in LLVM has been changed. r293936.
Clang commits
-
Clang gained a new flag, -mfentry, which will insert calls to fentry at each function entry point. This is x86 only. r293649.
-
clang-format's WhitespaceManager has been refactored. r293616.
Other project commits
-
LLDB now understands how to access and manipulate Intel MPX boundary tables. r293660.
-
ThreadSanitizer gained a new API that non-instrumented libraries can use to enable race detection on custom objects. r293885.
-
LLD's CMake build system now supports running tests for a stand-alone build. r293630.
-
A whole bunch of LLDB classes have moved from lldbCore to lldbUtility. r293941.