[LLVMdev] LLVM Weekly - #13, Mar 31st 2014

Alex Bradbury
Mon, 31 Mar 2014 11:18:54 -0000

LLVM Weekly - #13, Mar 31st 2014
===============================
If you prefer, you can read a HTML version of this email at
<http://llvmweekly.org/issue/13>

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

Thanks in no small part to a [mention on the Raspberry Pi
blog](http://www.raspberrypi.org/archives/6535), [Learning Python with
Raspberry
Pi](http://www.amazon.co.uk/Learning-Python-Raspberry-Alex-Bradbury/dp/1118717058/)
by myself and Ben Everard is at the time of writing #1 in the Programming
books section on Amaon UK. Also, keep your eyes on the [X-Dev London meetup
page](http://www.meetup.com/X-Dev-London/) as I'm expecting to give an
LLVM-related talk there on the 9th April, though it's not listed yet and is
subject to change.

## News and articles from around the web

It's only a week to go until [EuroLLVM
2014](http://llvm.org/devmtg/2014-04/),
which wil be held in Edinburgh on the 7th and 8th of April. Tragically I'm
not
going to be there as I'm trying to focus on getting my PhD finished, but the
schedule looks fantastic.

The Linux Collaboration Summit featured an update on progress of the LLVMLinux
project to build the Linux kernel using LLVM/Clang
([slides](http://events.linuxfoundation.org/sites/events/files/slides/2014-Collab-LLVMLinux.pdf)).
As of right now, there are approximately 48 kernel patches still working their
way upstream for the project.

John Regehr has written an interesting blog post on the subject of [using Z3
to prove some things about LLVM
optimisations](http://blog.regehr.org/archives/1122).

Facebook have [released the Warp C and C++
preprocessor](https://code.facebook.com/posts/476987592402291/under-the-hood-warp-a-fast-c-and-c-preprocessor/),
written in D. It claims to benchmark much faster than GCC's preprocessor
resulting in faster build times, though a [quick comparison with
Clang](https://news.ycombinator.com/item?id=7489532) didn't show it in a
favourable light speed-wise.

Meeting C++ have published a helpful summary of [what might make its way in to
C++17 or C++1y](http://meetingcpp.com/index.php/br/items/cpp-status.html).

## On the mailing lists

* Apple are [contributing their 64-bit ARM backend
upstream](http://article.gmane.org/gmane.comp.compilers.llvm.devel/71638).
Initially, this will co-exist with the current AArch64 backend (the Apple
implementation is called ARM64), and over time the backends will be merged.

* Tom Stellard has [announced a tentative release schedule for LLVM and Clang
3.4.1] and is searching for volunteers to test, as well as nominations for
patches that should be included. The proposed schedule is Mar 26 - April 9:
Identify and backport additional bug fixes to the 3.4 branch. April 9 - April
18: Testing Phase April 18: 3.4.1 Release

* Frank Winter started a discussion on [how to specify the alignment of a
pointer in LLVM
IR](http://article.gmane.org/gmane.comp.compilers.llvm.devel/71487), which
yields some interesting responses.

* Renato Golin kicked off a [discussion about supporting named registers in
LLVM/Clang](http://article.gmane.org/gmane.comp.compilers.llvm.devel/71567).
This is a GNU extension not currently supported. There seemed to be some
agreement that this is worth supporting, which resulted in a follow-on thread
on [how to implement support for named
registers](http://article.gmane.org/gmane.comp.compilers.llvm.devel/71625).

* A [query from Geoffrey
Irving](http://article.gmane.org/gmane.comp.compilers.clang.devel/35858) about
how to safely make use of floating point rounding mode resulted in an
interesting discussion about how a changing rounding modes could be supported.
For example, with the introduction of a `fp_rounding_sensitive` annotation.

## LLVM commits

* The ARM big-endian targets armeb and thumbeb have been added.
[r205007](http://llvm-reviews.chandlerc.com/rL205007).

* Apple's ARM64 backend has been merged, and will for a time live
side-by-side
with the existing AArch64 backend (see 'on the mailing lists' for more
details). [r205090](http://llvm-reviews.chandlerc.com/rL205090).

* The `@llvm.clear_cache` builtin has been born.
[r204802](http://llvm-reviews.chandlerc.com/rL204802),
[r204806](http://llvm-reviews.chandlerc.com/rL204806).

* Windows target triple spellings have been canonicalised. See the commit for
full details, but in short i686-pc-win32 is now i686-pc-windows-msvc,
i686-pc-mingw32 is now i686-pc-windows-gnu and i686-pc-cygwin is now
i686-pc-windows-cygnus. [r204977](http://llvm-reviews.chandlerc.com/rL204977).

* The first step towards little-endian code generation for PowerPC has been
committed. This initial patch allows the PowerPC backend to produce
little-endian ELF objects.
[r204634](http://llvm-reviews.chandlerc.com/rL204634).

* Another LLVM optimisation pass has been fixed to be address space aware, and
will no longer perform an addrspacecast.
[r204733](http://llvm-reviews.chandlerc.com/rL204733).

* It is now disallowed for an alias to point to a weak alias.
[r204934](http://llvm-reviews.chandlerc.com/rL204934).

* CloneFunctions will now clone all attributes, including the calling
convention.[r204866](http://llvm-reviews.chandlerc.com/rL204866).

* DebugInfo gained support for compressed debug info sections.
[r204958](http://llvm-reviews.chandlerc.com/rL204958).

## Clang commits

* The static analyzer is now aware of `M_ZERO` and `__GFP_ZERO` flags for
kernel mallocs. [r204832](http://llvm-reviews.chandlerc.com/rL204832).

* Clang learned how to de-duplicate string the MSVC way.
[r204675](http://llvm-reviews.chandlerc.com/rL204675).

* Capability attributes can be declared on a typedef declaration as well as a
structure declaration. [r204657](http://llvm-reviews.chandlerc.com/rL204657).

* `module.private.modulemap` and `module_private.map` are now documented.
[r205030](http://llvm-reviews.chandlerc.com/rL205030).

* Clang's CodeGen module now allows different RTTI emission strategies. This
was added for ARM64. [r205101](http://llvm-reviews.chandlerc.com/rL205101).

## Other project commits

* ThreadSanitizer has new benchmarks for synchronization handling.
[r204608](http://llvm-reviews.chandlerc.com/rL204608).

* Initial infrastructure for IEEE quad precision was added to compiler-rt.
[r204999](http://llvm-reviews.chandlerc.com/rL204999).

* LLD gained the `--allow-multiple-definition` and `--defsym` options.
[r205015](http://llvm-reviews.chandlerc.com/rL205015),
[r205029](http://llvm-reviews.chandlerc.com/rL205029).

* In LLDB, JITed function can now have debug info and be debugged with debug
and source info. [r204682](http://llvm-reviews.chandlerc.com/rL204682).

* ThreadSanitizer vector clock operations have been optimized and are now O(1)
for several important use cases.
[r204656](http://llvm-reviews.chandlerc.com/rL204656).