[LLVMdev] LLVM Weekly - #55, Jan 19th 2015

Alex Bradbury asb at asbradbury.org
Mon Jan 19 09:50:18 PST 2015


LLVM Weekly - #55, Jan 19th 2015
================================

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

Welcome to the fifty-fifth 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.

It seems to have been a very busy week in the world of LLVM, particularly with
regards to discussion on the mailing list. Due to travel etc and the volume of
traffic, I haven't been able to do much summarisation of mailing list
discussion I'm afraid.


## News and articles from around the web

LLM/Clang 3.6 [has been
branched](http://article.gmane.org/gmane.comp.compilers.llvm.devel/80665) and
subsequently, 3.6 RC1 [has been
tagged](http://article.gmane.org/gmane.comp.compilers.clang.devel/40736).

LLVM/Clang 3.5.1 seems to have been [quietly
released](http://llvm.org/releases/download.html#3.5.1).

Registration for [EuroLLVM 2015](http://llvm.org/devmtg/2015-04/), to be held
at Goldsmiths College in London, UK on April 13-14th is [now
open](http://www.eventbrite.com/e/eurollvm-2015-tickets-15350278095).

All slides and videos from the last LLVM Developers' meeting are [now
live](http://llvm.org/devmtg/2014-10/), including those from Apple employees.


## On the mailing lists

* Ahmed Bougacha has posted an [RFC on adding integer saturation
intrinsics](http://article.gmane.org/gmane.comp.compilers.llvm.devel/80678) to
LLVM. There are various questions in the ensuing thread about whether adding
an intrisc is necessary and the best way to go about this. i.e. whether it is
possible to just pattern match later on in the compilation flow.

* In response to a question about using LLDB when attached to a system that
may switch between AARch32 and AArch64, Colin Riley has written a good
description of [current support and potential future support for multiple
targets in one debugger
session](http://article.gmane.org/gmane.comp.debugging.lldb.devel/6184).

* Jonathan Ragan-Kelley [asks about emitting IR in older
formats](http://article.gmane.org/gmane.comp.compilers.llvm.devel/80499) due
to a requirement to emit 3.2-compatible bitcode for Nvidia's libNVVM. Several
replies suggest looking at SPIR.

* Do you wonder what the difference is between the multiple ways of querying
operation costs? [Wonder no
more](http://article.gmane.org/gmane.comp.compilers.llvm.devel/80705).

* Duncan P.N. Exon Smith has posted on [RFC on first-class debug info in
IR](http://article.gmane.org/gmane.comp.compilers.llvm.devel/80563). There
have been a few changes since the previous proposal.

* Chandler Carruth has written a [summary of alias analysis pass ordering in
LLVM and
Clang](http://article.gmane.org/gmane.comp.compilers.llvm.devel/80841). This
details both the current situation as well as Chandler's views on how it
should change in the future.

* Philip Reames is seeking wider feedback on [two implementation issues for
GCStrategy](http://article.gmane.org/gmane.comp.compilers.llvm.devel/80849/).
The two key questions are whether GC-specific properties should be checked in
the IR verifier and what the access model for GCStrategy should be. No
responses yet, so now is the time to dive in.

* Ramshankar Ramanarayanan has posted a [proof of concept for a loop fusion
pass](http://article.gmane.org/gmane.comp.compilers.llvm.devel/80798).
Meanwhile, Adam Nemet has an [RFC for a loop distribution
pass](http://article.gmane.org/gmane.comp.compilers.llvm.devel/80528).

* Lang Hanes has posted [a proposed new JIT
API](http://article.gmane.org/gmane.comp.compilers.llvm.devel/80639) with a
catchy name (ORC: On Request Compilation). The aim is to cleanly support a
wider range of JIT uses cases, and to be clear this higher level API would not
replace the existing MCJIT.

* Bjoern Haase has been spending some time examining generated code for armv6
microcontroller targets such as the Cortex M0. He has a [series of suggestions
for tweaking default optimizer settings for this
target](http://article.gmane.org/gmane.comp.compilers.llvm.devel/80497).


## LLVM commits

* A new code diversity feature is now available. The NoopInsertion pass will
add random no-ops to x86 binaries to try to make ROP attacks more difficult by
increasing diversity. [r225908](http://reviews.llvm.org/rL225908). I highly
recommend reading up on the [blind ROP](http://www.scs.stanford.edu/brop/)
attack published last year. It would also be interesting to see an
implementation of [G-Free](http://seclab.tuwien.ac.at/papers/gfree.pdf) for
producing binaries without simple gadgets. The commit was later reverted for
some reason.

* A nice summary of recent MIPS and PowerPC target developments, as well as
the OCaml bindings is now there in the form of the 3.6 release notes.
[r225607](http://reviews.llvm.org/rL225607),
[r225695](http://reviews.llvm.org/rL225695),
[r225779](http://reviews.llvm.org/rL225779).

* LLVM learned the llvm.frameallocate and llvm.framerecover intrinsics, which
allow multiple functions to share a single stack allocation from one
function's call frame. [r225746](http://reviews.llvm.org/rL225746),
[r225752](http://reviews.llvm.org/rL225752).

* An experimental (disabled by default) 'inductive range check elimination'
pass has landed. This attempts to eliminates range checks of the form `0 <=
A*I + B < Length`. [r226201](http://reviews.llvm.org/rL226201).

* StackMap/PatchPoint support is now available for the PowerPC target.
[r225808](http://reviews.llvm.org/rL225808).

* Initial support for Win64 SEH catch handlers has landed. See the commit
message for current missing functionality.
[r225904](http://reviews.llvm.org/rL225904).

* A new utility script has been started to help update simple regression
tests. It needs some work to generalise it beyond x86.
[r225618](http://reviews.llvm.org/rL225618).


* TargetLibraryInfo has been moved into the Analysis library.
[r226078](http://reviews.llvm.org/rL226078).


## Clang commits

* The new `-fno-inline-asm` flag has been added to disallow all inline asm. If
it exists in the input code it will be reported as an error.
[r226340](http://reviews.llvm.org/rL226340).

* `-fsanitize-recover` command line flags are again supported.
[r225719](http://reviews.llvm.org/rL225719).

* The integrated assembler is now used by default on 32-bit PowerPC and SPARC.
[r225958](http://reviews.llvm.org/rL225958).


## Other project commits

* The libcxx build system learnt how to cross-compile.
[r226237](http://reviews.llvm.org/rL226237).

* LLD gained a nice speedup by speculative instantiating archive file members.
This shaves off a second or two for linking lld with lld.
[r226336](http://reviews.llvm.org/rL226336).

* LLD learnt the `--as-needed` flag (previously this was the default
behaviour). [r226274](http://reviews.llvm.org/rL226274).

* OpenMP gained an AARch64 port. [r225792](http://reviews.llvm.org/rL225792).



More information about the llvm-dev mailing list