LLVM Weekly - #56, Jan 26th 2015
===============================
If you prefer, you can read a HTML version of this email at
<http://llvmweekly.org/issue/56>.
Welcome to the fifty-sixth 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.
I'll be talking the [lowRISC](http://lowrisc.org/) project to produce a
fully
open-source SoC at FOSDEM this coming weekend. Do come and see my [main track
talk](https://fosdem.org/2015/schedule/event/lowrisc/) and read my [speaker
interview](https://fosdem.org/2015/interviews/2015-alex-bradbury/) for more
background. There is of course an
[LLVM toolchain devroom](https://fosdem.org/2015/schedule/track/llvm_toolchain/)
on the Sunday.
## News and articles from around the web
Stephen Diehl has written an absolutely fantastic tutorial on [writing an LLVM
specializer for Python](http://dev.stephendiehl.com/numpile/), guiding you
through the process of creating something like
[Numba](https://github.com/numba/numba).
A new tool, [Dwgrep](http://pmachata.github.io/dwgrep/) (DWARF Grep) may be of
interest to many LLVM Weekly readers. This [blog
post](http://developerblog.redhat.com/2015/01/22/querying-dwarf-for-fun-and-profit/)
gives an intro to using it.
Paul Smith has a blog post on [getting started with the LLVM C
API](https://pauladamsmith.com/blog/2015/01/how-to-get-started-with-llvm-c-api.html).
A post on the official LLVM Blog announces that [LLDB is coming to
Windows](http://blog.llvm.org/2015/01/lldb-is-coming-to-windows.html),
announcing to a wider audience that it is now possible to debug simple
programs with LLDB on Windows and giving a rationale for investing effort into
porting LLDB to Windows and adding support for the MS debug format. The post
also features a todo list indicating what's next for Windows support.
A draft version 0.1 of the IA-32 psABI (processor specific application binary
interface) is
[available](https://github.com/hjl-tools/x86-psABI/tree/hjl/x86/master). This
aims to supplement the existing System V ABI with conventions relevant to
newer features such as SSE1-4 and AVX. Comments
[are welcome](https://groups.google.com/forum/#!topic/ia32-abi/nq6cvH_VVV4).
LLVM/Clang 3.6-rc1 is now
[available](http://article.gmane.org/gmane.comp.compilers.llvm.devel/81014).
Get testing and filing bugs.
ELLCC 0.1.8 [has been
released](http://article.gmane.org/gmane.comp.compilers.clang.devel/40797).
ELLCC is an LLVM/Clang-based cross compilation toolchain.
LLDB now [has it's own IRC
channel](http://article.gmane.org/gmane.comp.debugging.lldb.devel/6352).
You'll want to join #lldb on irc.oftc.net.
## On the mailing lists
* Chandler Carruth has posted a [canonicalization-related
RFC](http://article.gmane.org/gmane.comp.compilers.llvm.devel/81056). He
demonstrates a case where a trivial function is compiled to two equivalent IR
sequences. This was [later committed](http://reviews.llvm.org/rL226781).
* Michael Zolotukhin has [proposed an RFC on adding a heuristic for complete
loop
unrolling](http://article.gmane.org/gmane.comp.compilers.llvm.devel/81173).
Currently, the loop unrolling heuristics don't take account of any new
optimisations that maybe enabled by unrolling the loop. Changing that would
allow for the profitability of the unroll to be more accurately approximated.
* Chandler Carruth is [getting ready to turn on by default the next part of
his vector shuffle
work](http://article.gmane.org/gmane.comp.compilers.llvm.devel/81143). Now is
a good time to benchmark and report any regressions you see with
`-x86-experimental-vector-shuffle-legality` on your codebases.
* Ahmed Bougacha has been having [problems with the cost model calculations
for saturation
instructions](http://article.gmane.org/gmane.comp.compilers.llvm.devel/80941).
The cost is over-estimated because a number of the individual IR instructions
fold-away later in lowering. He suggests adding a new method to
TargetTransformInfo for multi-instruction cost computation. There hasn't
been
much feedback thus far.
* Chandler Carruth has been [looking through the LLD
libraries](http://article.gmane.org/gmane.comp.compilers.llvm.devel/80958) and
trying to work out the current layering, as well as what a potential future
layering might be. He proposes offering a basic library offering basic
functionality and a second library offering a higher-level interface for
actually doing linking.
## LLVM commits
* A backend targeting the extended BPF (Berkeley Packet Filter)
interpreter/JIT in the Linux kernel has been added. See [this LWN
article](http://lwn.net/Articles/603983/) for more background.
[r227008](http://reviews.llvm.org/rL227008).
* The initial version of the new ORC JIT API has landed.
[r226940](http://reviews.llvm.org/rL226940).
* There's been a flurry of work on the new pass manager this week. One
commit
I will choose to pick out is the port of InstCombine to the new pass manager,
which seems like a milestone or sorts.
[r226987](http://reviews.llvm.org/rL226987).
* LLVM learnt how to use the GHC calling convention on AArch64.
[r226473](http://reviews.llvm.org/rL226473).
* InstCombine will now canonicalize loads which are only ever stored to always
use a legal integer type if one is available.
[r226781](http://reviews.llvm.org/rL226781).
* The `llvm_any_ty` type for intrinsics has been born.
[r226857](http://reviews.llvm.org/rL226857).
* llvm-objdump now understands `-indirect-symbols` to dump the Mach-O indirect
symbol table. [r226848](http://reviews.llvm.org/rL226848).
## Clang commits
* Clang now supports SPIR calling conventions.
[r226548](http://reviews.llvm.org/rL226548).
* It's now possible to set the stack probe size on the command line.
[r226601](http://reviews.llvm.org/rL226601).
* Clang gained initial support for Win64 SEH IR emission.
[r226760](http://reviews.llvm.org/rL226760).
## Other project commits
* Sun Solaris users, now is the time to celebrate. libc++ will now build on
your platform of choice. [r226947](http://reviews.llvm.org/rL226947).
* A minimal implementation of ARM static linking landed in lld.
[r226643](http://reviews.llvm.org/rL226643).
* Basic support for PPC was added to openmp.
[r226479](http://reviews.llvm.org/rL226479).