[llvm-dev] LLVM Weekly - #122, May 2nd 2016

Alex Bradbury via llvm-dev llvm-dev at lists.llvm.org
Mon May 2 08:28:43 PDT 2016


LLVM Weekly - #122, May 2nd 2016
================================

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

Welcome to the one hundred and twenty-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](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

GCC 6.1 [has been
released](https://gcc.gnu.org/ml/gcc-announce/2016/msg00000.html). Perhaps the
most apparent user-visible change is that the C++ frontend now defaults to
C++14.

The Rust compiler has [introduced a new intermediate
representation](http://blog.rust-lang.org/2016/04/19/MIR.html), MIR, used for
optimisations prior to lowering to LLVM IR.

Tanya Lattner has [written about the LLVM Foundation's plans for
2016](http://blog.llvm.org/2016/04/llvm-foundation-2016-announcements.html).
The LLVM Foundation has established 3 main programs: Educational Outreach,
Grants and Scholarships, and Women in Compilers and Tools.


## On the mailing lists

* Dean Michael Berris has shared an [RFC on upstraming Google's 'XRay'
function call tracing
system](http://lists.llvm.org/pipermail/llvm-dev/2016-April/098901.html). For
more information, you can read [the XRay
whitepaper](https://storage.googleapis.com/xray-downloads/whitepaper/XRayAFunctionCallTracingSystem.pdf).

* Sanjoy Das has suggested [generalising the AssumptionCache to
AxiomAche](http://lists.llvm.org/pipermail/llvm-dev/2016-April/098853.html).
He proposes maintaining separate lists of guards and assumptions within the
AxiomCache.

* There's been some more activity in response to Phil Tomson's question about
instruction scheduling. Christof Douma followed up [with some
advice](http://lists.llvm.org/pipermail/llvm-dev/2016-April/098763.html).

* Chris Bieneman has suggested [raising the CMake minimum version to
3.4.3](http://lists.llvm.org/pipermail/llvm-dev/2016-April/098780.html).
Renato Golin [flagged up some
concerns](http://lists.llvm.org/pipermail/llvm-dev/2016-April/098811.html),
with Chandler Carruth [offering a
counterpoint](http://lists.llvm.org/pipermail/llvm-dev/2016-April/098814.html).

* Discussion has continued on the proposal to introduce a new LLVM sub-project
for parallelism runtime and support libraries. This is probably best
summarised by reading [Hal Finkel's thoughts on the way
forward](http://lists.llvm.org/pipermail/llvm-dev/2016-April/098734.html), [C
Bergström's
concerns](http://lists.llvm.org/pipermail/llvm-dev/2016-April/098820.html),
and [Jason Henline's proposed charter for the
subproject](http://lists.llvm.org/pipermail/llvm-dev/2016-April/098822.html).

* Peter Collingbourne has shared an [RFC on redesigning the LLD symbol
table](http://lists.llvm.org/pipermail/llvm-dev/2016-April/098832.html) in
order to improve memory locality.


## LLVM commits

* LLVM now supports indirect call promotion based on value-profile
information. This will promote indirect calls to a direct call guarded by a
precondition. [r267815](http://reviews.llvm.org/rL267815).

* The LLVM documentation has been extended with a CMake primer covering the
basics of the CMake scripting language.
[r268096](http://reviews.llvm.org/rL268906).

* The PDB dumper has been refactored into a library.
[r267431](http://reviews.llvm.org/rL267431).

* The MinLatency attributed has been removed from SchedMachineModel.
[r267502](http://reviews.llvm.org/rL267502).

* CodeGenPrepare will now use branch weight metadata to decide if a select
should be turned into a branch. [r267572](http://reviews.llvm.org/rL267572).

* Support for `llvm.loop.distribute.enable` metadata was added. This indicates
a loop should be split in to multiple loops.
[r267672](http://reviews.llvm.org/rL267672).

* The SystemZ backend now supports the Swift calling convention.
[r267823](http://reviews.llvm.org/rL267823).

* libFuzzer's documentation has been expanded and improved.
[r267892](http://reviews.llvm.org/rL267892).


## Clang commits

* clang-tidy gained a new checker for redundant expressions on both sides of a
binary operator. [r267574](http://reviews.llvm.org/rL267574).

* A new clang-tidy check will warn for use of functions like `atoi` and `atol`
that don't report conversion errors.
[r268100](http://reviews.llvm.org/rL268100).

* The `nodebug` attribute on a global or static variable will now suppress all
debug info for that variable. [r267746](http://reviews.llvm.org/rL267746).

* A number of OpenMP features gained codegen support, such as the map clause
and target data directive. [r267808](http://reviews.llvm.org/rL267808),
[r267811](http://reviews.llvm.org/rL267811).


## Other project commits

* LLD now supports an `-O0` option to produce output as quickly as possible.
Currently this disables section merging at the cost of a potentially much
larger output. [r268056](http://reviews.llvm.org/rL268056).

* The symbol table in LLD's ELF linker has been redesigned with the intent of
improving memory locality. The new design produces measurable speedups for the
binaries tested in the commit message.
[r268178](http://reviews.llvm.org/rL268178).

* LLD's linkerscript support expanded to encompass comparison operators.
[r267832](http://reviews.llvm.org/rL267832).

* LLD performance on large executables has been improved by skipping
scanRelocs on sections that are never mapped to memory at runtime (e.g. debug
sections). [r267917](http://reviews.llvm.org/rL267917).


More information about the llvm-dev mailing list