[LLVMdev] LLVM Weekly - #17, Apr 28th 2014

Alex Bradbury asb at asbradbury.org
Mon Apr 28 04:06:45 PDT 2014


LLVM Weekly - #17, Apr 28th 2014
================================

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

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

Last week I wondered why the GCC logo is a [GNU leaping out of an
egg](http://commons.wikimedia.org/wiki/File:GNU_Compiler_Collection_logo.svg).
Thank you to everyone who wrote in to let me know it is a reference to EGCS.
GCC was of course famously forked as EGCS which was later merged back in.
Apparently this was pronounced by some as "eggs". Mystery solved.


## News and articles from around the web

GCC 4.9.0 was [released last
Tuesday](http://gcc.gnu.org/ml/gcc/2014-04/msg00195.html). See
[here](http://gcc.gnu.org/gcc-4.9/changes.html) for more detailed notes on
changes in this release.

Honza Hubička wrote a blog post on the [history of linktime optimisation in
GCC](http://hubicka.blogspot.co.uk/2014/04/linktime-optimization-in-gcc-1-brief.html),
which was followed by a post containing a [benchmark comparison of LTO in GCC
vs
LLVM](http://hubicka.blogspot.ca/2014/04/linktime-optimization-in-gcc-2-firefox.html).

On Twitter, @lambdamix drew my attention to [Notes on Graph Algorithms
Used in Optimizing
Compilers](http://www.cs.umb.edu/~offner/files/flow_graph.pdf)
(PDF). I imagine it will be of interest to many LLVM Weekly readers.


## On the mailing lists

* Michael Zolotukhin [proposes extending LLVM IR with new intrinsics for safe
division](http://article.gmane.org/gmane.comp.compilers.llvm.devel/72466).
These join the existing intrinsics for addition with overflow. Filip Pizlo
follows up with a [description of how it would be used for various potential
language
frontends](http://article.gmane.org/gmane.comp.compilers.llvm.devel/72510).
Michael has also posted a [detailed justification in answer to concerns
raised](http://article.gmane.org/gmane.comp.compilers.llvm.devel/72533).

* James Molloy [shares an updated on the AArch64 to ARM64
merge](http://article.gmane.org/gmane.comp.compilers.llvm.cvs/185388/),
including time estimates for remaining tasks. The initial merge should be
complete before LLVM 3.5. Additionally, Ana Pazos has gained permission to
share [relative SPEC2000 figures for ARM64 vs
AArch64](http://article.gmane.org/gmane.comp.compilers.llvm.devel/72454/).

* Sylvestre Ledru [proposes removing outdated marketing material from the
Clang
website](http://article.gmane.org/gmane.comp.compilers.clang.devel/36229). In
particular, the performance comparisons are with GCC 4.0 or 4.2 which is of
course rather outdated, particularly given how GCC has improved since then.

* Kostya Serebryany reports that [AddressSanitizer and LeakSanitizer are
finding many many leaks within
Clang](http://article.gmane.org/gmane.comp.compilers.clang.devel/36234). The
bug tracking this is [#19521](http://llvm.org/bugs/show_bug.cgi?id=19521).

* Tom Stellard has [kicked off the second testing phase for LLVM and Clang
3.4.1](http://article.gmane.org/gmane.comp.compilers.llvm.devel/72524). This
is expected to be the last release candidate, so 3.4.1 shouldn't be far away.


## LLVM commits

* The 'musttail' marker which was [proposed several weeks
ago](http://article.gmane.org/gmane.comp.compilers.llvm.devel/71775) has been
added. Unlike the 'tail' marker, musttail guarantees that tail call
optimization will occur. Check the documentation added in the commit for a
more detailed explanation. [r207143](http://reviews.llvm.org/rL207143).

* The rewrite of BlockFrequencyInfo finally landed. A description of the
advantages of the new algorithm is in the original commit message,
[r206548](http://reviews.llvm.org/rL206548). After a series of bounces, it
landed in [r206766](http://reviews.llvm.org/rL206766).

* LLVM can now generate PE/COFF object files targeting 'Windows on ARM'.
[r207345](http://reviews.llvm.org/rL207345).

* A CallGraph strongly connected components pass manager has been added making
use of the new LazyCallGraph analysis framework. This is part of the new pass
manager work Chandler Carruth has been working on and is of course a work in
progress. [r206745](http://reviews.llvm.org/rL206745).

* The scheduler model for the Intel Silvermont microarchitecture has been
replaced. The commit message claims substantial improvements on integer tests.
I'm assuming RAL in this context refers to RegAllocLocal?
[r206957](http://reviews.llvm.org/rL206957).

* ARM64 has of course seen a large number of changes. Among those, support for
feature predicates for NEON/FP/CYPTO instructions. This allows the compiler to
generate code without using those instructions.
[r206949](http://reviews.llvm.org/rL206949). Additionally, there is now a big
endian version of the ARM64 target machine.
[r206965](http://reviews.llvm.org/rL206965).

* getFileOffset has been dropped from LLVM's C API. Justification is in the
commit message. [r206750](http://reviews.llvm.org/rL206750).

* The LoopVectorize pass now keeps statistics on the number of analyzed loops
and the number of vectorized loops.
[r206956](http://reviews.llvm.org/rL206956).

* The x86 backend gained new intrinsics for Read Time Stamp Counter.
[r207127](http://reviews.llvm.org/rL207127).

* Initial work on mutation support for the lazy call graph has landed. As with
most of Chandler's commits, there's much more information in the commit
message. [r206968](http://reviews.llvm.org/rL206968).

* MCTargetOptions has been introduced, which for now only contains a single
flag. SanitizeAddress enabled AddressSanitizer instrumentation of inline
assembly. [r206971](http://reviews.llvm.org/rL206971).

* llvm-cov now supports gcov's `--long-file-names` option.
[r207035](http://reviews.llvm.org/rL207035).


## Clang commits

* Documentation for sample profiling was added.
[r206994](http://reviews.llvm.org/rL206994).

* Support for parsing the linear clause for the 'omp simd' directive was
added. [r206891](http://reviews.llvm.org/rL206891).

* Clang gained support for the `-fmodules-search-all` option, which searches
for symbols in non-imported modules (i.e. those referenced in module maps but
not imported). [r206977](http://reviews.llvm.org/rL206977).


## Other project commits

* AddressSanitizer gained an experimental detector for "one definition rule"
violations (where two globals with the same name are defined in different
modules). [r207210](http://reviews.llvm.org/rL207210).




More information about the llvm-dev mailing list