LLVM Weekly - #98, Nov 16th 2015

Welcome to the ninety-eighth 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
http://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.

This week's issue comes to you from Vienna where I'm just about to head home
from a short break (so apologies if it's a little later than usual and perhaps
a little less detailed). I'll admit that nobody has actually written in to beg
that LLVM Weekly share travel tips, but I will say that Vienna is a beautiful
city that's provided lots to do over the past few days. If you're visiting, I
can strongly recommend Salm Bräu for good beer and food.

On the mailing lists

Do you maintain an out-of-tree target? Does your out-of-tree target have a
huge number of subregisters and depends on imprecise lanemasks being
available? If so, Matthias Braun wants to hear from
you.
Speak up now if the proposed change may affect you.

A simple MachineInstruction SSA pass for PowerPC has been added. The
implementation is short and straight-forward, so worth a read if you want to
do some MI-level peephole optimisations for your target.
r252651.

Basic support for AArch64's address tagging has been added. In AArch64, the
top 8 bits of an address can be used to store extra metadata with these bits
being masked out before going through address translation.
r252573.

The CMake build system gained a new LLVMExternalProjectUtils module. As an
example, this is used with the LLVM test suite which can be set up to be
rebuilt whenever the in-tree clang or lld change. This could also be used with
compiler-rt or libcxx. r252747.

An 'empty token' is now defined (written as token empty) for when using
tokens in LLVM IR. r252811.

LibFuzzer gained a new experimental search heuristic, drill. As the comment
in FuzzerLoop.cpp explains, this will 1) read+shuffle+execute+minimize the
corpus, 2) choose a random unit, 3) reset the coverage, 4) start fuzzing as if
the chosen unit was the only element of the corpus, 5) reset the coverage
again when done, 6) merge the newly created corpus into the original one.
r252838.

A BITREVERSE SelectionDAG node and a set of llvm.bitreverse.* intrinsics
have been introduced. The intention is that backends should no longer have to
reimplement similar code to match instruction patterns to their own ISA's
bitreverse instruction. See also the patch to the ARM backend that replaces
ARMISD::RBIT with ISD::BITREVERSE.
r252878,
r253047.

Clang commits

Support for __attribute__(internal_linkage) was added. This is much like
C's static keyword, but applies to C++ class methods.
r252648.

Clang now supports GCC's __auto_type extension, with a few minor
enhancements. r252690.

Other project commits

libcxx gained initial support for building with mustl libc. Primarily this
is a new CMake option, necessary as Musl doesn't provide a macro to indicate
its presense. r252457).