[LLVMdev] LLVM Weekly - #26, Jun 30th 2014

Alex Bradbury asb at asbradbury.org
Mon Jun 30 05:37:23 PDT 2014


LLVM Weekly - #26, Jun 30th 2014
================================

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

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


## News and articles from around the web

Vladmir Makarov has done his [yearly comparison of GCC and
LLVM](https://gcc.gnu.org/ml/gcc/2014-06/msg00254.html), posting performance
comparisons using SPECInt2000 on ARM and x86-64.

Version 0.13.0 of LDC, the LLVM-based D compiler has [been
released](https://github.com/ldc-developers/ldc/releases/tag/v0.13.0). This
brings a whole host of improvements, listed in detail within the release
announcement.

Some Mozilla engineers have been looking at using clang-cl (the
MSVC-compatible Clang driver) to build Firefox. With the help of the fallback
flag (which falls back o compiling with MSVC if Clang fails) they've [managed
to get a completed
build](http://ehsanakhgari.org/blog/2014-06-26/building-firefox-on-windows-with-clang-cl).
Ehsan tells us that [602 of the 7168 files, about 8% require the MSVC
fallback](https://twitter.com/ehsanakhgari/status/482271470010105857) at the
moment.

Trail of Bits have posted a [preview of
McSema](http://blog.trailofbits.com/2014/06/23/a-preview-of-mcsema/), a
framework for translating x86 binaries to LLVM bitcode. The accompanying talk
took place on the 28th June, so hopefully we'll hear more about this soon. The
blog post tells us that McSema will be open source and made available soon.

Bruce Mitchener has written up his [experience of integrating with LLDB for
Dylan](http://dylanfoundry.org/2014/06/25/integrating-with-lldb/).

Codeplay (based in Edinburgh) are advertising for a [full time compiler
engineer](http://www.codeplay.com/company/jobs/view.html?uid=12#.U7B4jzksa00).

## On the mailing lists

* Alp Toker kicked off a [long thread about the use of Phabricator for code
reviews](http://article.gmane.org/gmane.comp.compilers.llvm.devel/74274). The
main problem is that Phabricator reviews aren't necessarily going through
llvm-commits which is potentially harming development. A very sensible step
has been taken of [filing a feature request with
Phabricator](https://secure.phabricator.com/T5495) for the ability to warn
when no mailing list is subscribed to a code review.

* James Molloy has [shared some rough benchmark data on LLVM targeting
Cortex-A57](http://article.gmane.org/gmane.comp.compilers.llvm.devel/74269).
For SPEC, LLVM is apparently less than 5% behind GCC for most benchmarks.
James also lists a number of missed optimisation opportunities he's noticed so
far in comparing the output.

* Alexander Kornienko [questions whether it's time to bump the minimum Python
requirement from 2.5 to
2.7](http://article.gmane.org/gmane.comp.compilers.llvm.devel/74314). Replies
o the thread made the distinction between the minimum to run tests using lit
(which is written in Python) and the minimum for tooling scripts that may need
to be less portable. Despite 2.5 being ancient, the reason for wanting to
support it is for long-lived releases such as RHEL.

* Diego Novillo [suggests turning on debug column info by
default](http://article.gmane.org/gmane.comp.compilers.llvm.devel/74351). He
found almost no difference in compile time and only a 1% growth in debug info
size. There seems to be support for doing this, with the only concern being
that some debuggers might not interpret the data properly leading to odd
behaviour. David Blaikie found a [few regressions in the gdb test
suite](http://article.gmane.org/gmane.comp.compilers.llvm.devel/74376), but
has yet to investigate further.


## LLVM commits

* A significant overhaul of how vector lowering is done in the x86 backend has
been started. While it's under development it's off by default, though it's
hoped that in times there will be measurable performance improvements on
benchmarks conducive to vectorization.
[r211888](http://reviews.llvm.org/rL211888) and more.

* X86 FastISel will use EFLAGS directly when lowering select instructions if
the condition comes from a compare. It also now supports floating-point
selects among other improvements. [r211543](http://reviews.llvm.org/rL211543),
[r211544](http://reviews.llvm.org/rL211544), and more.

* ScaledNumber has been split out from BlockFrequencyInfo into the Support
library. [r211562](http://reviews.llvm.org/rL211562).

* The loop vectorizer now features `-Rpass-missed` and `-Rpass-analysis`
reports. [r211721](http://reviews.llvm.org/rL211721).

* The developer documentation has been updated to clarify that although you
can use Phabricator to submit code for review, you should also ensure the
relevant -commits mailing list is added as a subscriber on the review and be
prepared to respond to comments there.
[r211731](http://reviews.llvm.org/rL211731).

* COMDATs have been added to the IR. What's a COMDAT? [StackOverflow has you
covered](http://stackoverflow.com/a/2440933).
[r211920](http://reviews.llvm.org/rL211920).

* The NVPTX backend saw a whole series of commits.
[r211930](http://reviews.llvm.org/rL211930),
[r211932](http://reviews.llvm.org/rL211932),
[r211935](http://reviews.llvm.org/rL211935), and more.

* LLVM gained an abstraction for a random number generator (RNG).
[r211705](http://reviews.llvm.org/rL211705).


## Clang commits

* A nice little diagnostic improvement has been added for when the user
accidentally puts braces before the identifer, e.g. `int [4] foo;`.
[r211641](http://reviews.llvm.org/rL211641).

* OpenMP learned the 'section' directive (and some more, see the full commit
logs). [r211685](http://reviews.llvm.org/rL211685),
[r211767](http://reviews.llvm.org/rL211767).


## Other project commits

* Support for ARM EHABI unwinding was added to libunwind.
[r211743](http://reviews.llvm.org/rL211743).

* The lldb Machine Interface gained a number of new commands and bug fixes.
[r211607](http://reviews.llvm.org/rL211607).



More information about the llvm-dev mailing list