[llvm-dev] LLVM Weekly - #202, Nov 13th 2017

Alex Bradbury via llvm-dev llvm-dev at lists.llvm.org
Mon Nov 13 13:02:15 PST 2017


LLVM Weekly - #202, Nov 13th 2017
=================================

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

Welcome to the two hundred and 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](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.


## News and articles from around the web

Trip reports have started to appear from the ISO C++ standards meeting in
Albuquerque. Check out [Herb Sutter's
writeup](https://herbsutter.com/2017/11/11/trip-report-fall-iso-c-standards-meeting-albuquerque/)
and the
[Reddit trip report](https://www.reddit.com/r/cpp/comments/7ca2sh/2017_albuquerque_iso_c_committee_reddit_trip/)
written by Bryce Lelbach and other commmittee members.

It looks like all the videos from the 2017 LLVM Dev Meeting have
[now been posted](https://www.youtube.com/playlist?list=PL_R5A0lGi1ADRlI51k7qV9gw1N4DBNUUW).


## On the mailing lists

* Amara Emerson has posted an
[RFC](http://lists.llvm.org/pipermail/llvm-dev/2017-November/118969.html) on
the design of a generic machine instruction combiner/optimizer framework,
which would be used as part of the GlobalISel pipeline.

* Quentim Colombet has revived the [discussion in enabling GlobalISel for
AArch64 at O0 by
default](http://lists.llvm.org/pipermail/llvm-dev/2017-November/118881.html).

* Chandler Carruth has [summed
up](http://lists.llvm.org/pipermail/llvm-dev/2017-November/118999.html) the
options for dealing with function names that are treated specially by LLVM
(libc/libm function names primarily).

* Krzysztof Parzyszek has written a really useful post [explaining the two
forms of implicit
defs](http://lists.llvm.org/pipermail/llvm-dev/2017-November/119026.html) in
LLVM.

* Vedant Kumar proposed an RFC on [improvements to
IRBuilder](http://lists.llvm.org/pipermail/llvm-dev/2017-November/118852.html)
that provide a better interface for clients to "do the right thing" when it
comes to setting debug locations.

* Rui Ueyama [proposed dropping TLS relaxations in LLD in favour of
TLSDESC](http://lists.llvm.org/pipermail/llvm-dev/2017-November/118884.html).
A number of people explained how TLS relaxations are important to their use
cases, meaning this change is very unlikely to happen. As Rui
[explains](http://lists.llvm.org/pipermail/llvm-dev/2017-November/118909.html),
floating these ideas and getting feedback is an important part of the LLD
design and development process.

* Alexey Bataev wrote an RFC on [improving debug info support for
Cuda/NVPTX](http://lists.llvm.org/pipermail/llvm-dev/2017-November/118841.html).

* Nuno Lopes is looking for confirmation of whether [it's ever valid for LLVM
IR to allocate more than half the address
space](http://lists.llvm.org/pipermail/llvm-dev/2017-November/118901.html).


## LLVM commits

* GlobalISel learned to legalize non-power-of-2 sized types.
[r317560](http://reviews.llvm.org/rL317560).

* The set of fast-math flags have been updated and expanded. See the commit
message for full details. [r317488](http://reviews.llvm.org/rL317488).

* llvm-opt-fuzzer was introduced to allow fuzzing of optimisation passes. The
interface is similar to llvm-isel-fuzzer.
[r317883](http://reviews.llvm.org/rL317883).

* A cross-compilation toolchain configuration has been added for using
clang-cl on non-Windows hosts to target MSVC.
[r317830](http://reviews.llvm.org/rL317830).

* All `TargetOpcode::*` instructions now have properties set explicitly,
meaning you can freely use guessInstructionProperties=0 in your backend to
opt-out of property inference. This change made it obvious what hasSideEffects
was being inferred as '1' in unexpected cases, e.g. PHI. This has now been
corrected, and patches are in review that fix hasSideEffects for other
instructions.
[r317674](http://reviews.llvm.org/rL317674),
[r317721](http://reviews.llvm.org/rL317721).

* The xray-converter tool can now convert XRay traces to Chrome's Trace Event
Format. [r317531](http://reviews.llvm.org/rL317531).

* Documentation has been added on cross-compiling and testing the compiler-rt
builtins for Arm targets with QEMU.
[r317554](http://reviews.llvm.org/rL317554).

* FileCheck now supports a `-D` flag which can be used to define variables
used in CHECK lines. [r317572](http://reviews.llvm.org/rL317572).

* MC layer support for AArch64 SVE has started to land.
[r317590](http://reviews.llvm.org/rL317590),
[r317591](http://reviews.llvm.org/rL317591).

* Target/TargetInstrInfo.h moved to CodeGen/TargetInstrInfo.h.
[r317647](http://reviews.llvm.org/rL317647).

* A number of additional RISC-V backend patches have finally landed. Codegen
support for memory operations, conditional branches, and function calls.
Please help review [some of my remaining
patches](https://reviews.llvm.org/differential/?authors=asb&order=updated).
[r317685](http://reviews.llvm.org/rL317685),
[r317690](http://reviews.llvm.org/rL317690),
[r317691](http://reviews.llvm.org/rL317691).

* The llvm.sideeffect intrinsic has been introduced. This intrinsic prevents
optimisations passes from optimising away any loops that contain it.
[r317729](http://reviews.llvm.org/rL317729).

* The AMDGPU backend gained a number of new optimisations.
[r317750](http://reviews.llvm.org/rL317750),
[r317751](http://reviews.llvm.org/rL317751),
[r317752](http://reviews.llvm.org/rL317752), and more.


## Clang commits

* The `_Float16` and `__fp16` types have been documented.
[r317558](http://reviews.llvm.org/rL317558).

* The redundant expression checker can now detect redundant expressions that
contain macros. [r317570](http://reviews.llvm.org/rL317570).


## Other project commits

* The LLVM test suite now includes the HACCKernels (Hardware/Hybrid
Accelerated Cosmology Code) benchmark.
[r317483](http://reviews.llvm.org/rL317483).

* ubsan-minimal no longer depends on libc++.
[r317969](http://reviews.llvm.org/rL317969).

* The NativeRegisterContext class in LLDB has seen some minor refactoring,
which is likely to lead to changes if you have out of tree platform plugins.
[r317881](http://reviews.llvm.org/rL317881).


## Review corner

The LLVM Weekly review corner serves to highlight patches that are stuck
waiting awaiting review, or work from first-time contributors. See
[here](http://llvmweekly.org/reviewcorner) for more information and how to
submit you work for inclusion. Of course the hope is that highlighting these
patches will enable LLVM Weekly readers will step up and help to get them
merged. I'll be reporting back each week on any activity generated on these
patches, as well as sharing a new batch. If you want your patch included you
must submit it via the linked form.

We had one patch submission last week and it did attract new review activity
thanks to David Li.

There were two new review corner submissions this week:

* This patch helps the inline cost model to find repeated loads in the callee
that are clobbered by the stores which are going to be removed after inlining.
It improves the accuracy of inline cost model and improves performance.
[D33946](https://reviews.llvm.org/D33946), patch by Haicheng Wu.

* "By just reordering Values.def, one can get a clang binary that's 400k
smaller without any performance change, just by favoring `isa<Constant>` over
`isa<Argument>`". [D39373](https://reviews.llvm.org/D39373), patch by Serge
Guelton. UPDATE: this patch has actually been reviewed and committed
immediately after this issue was written - thanks Reid Kleckner!


More information about the llvm-dev mailing list