[LLVMdev] LLVM Weekly - #12, Mar 24th 2014
Alex Bradbury
asb at asbradbury.org
Mon Mar 24 07:41:42 PDT 2014
LLVM Weekly - #12, Mar 24th 2014
================================
If you prefer, you can read a HTML version of this email at
<http://llvmweekly.org/issue/12>
Welcome to the twelfth 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
* You may recall my previous coverage of efforts by Philip Reames and others
to introduce necessary changes to LLVM to support a precise relocating garbage
collector. Previously he [described the issues of using the llvm.gcroot
intrinsic](http://www.philipreames.com/Blog/2014/02/21/why-not-use-gcroot/).
True to his word, he's followed up that post with a description of '[late
safepoint
placement](http://www.philipreames.com/Blog/2014/03/18/late-safepoint-placement-overview/)',
which is the approach Philip and his colleagues are working on to address the
problem. More updates are promised over the next few weeks.
* musl libc 1.0.0 [has been released](http://www.musl-libc.org/download.html).
It is an MIT-licensed libc aiming to compete with glibc. "musl is a new
general-purpose implementation of the C library. It is lightweight, fast,
simple, free, and aims to be correct in the sense of standards-conformance and
safety."
* The [LLVM backend for the HiPE Erlang
compiler](http://erllvm.softlab.ntua.gr/) has been
[merged](https://github.com/erlang/otp/commit/9d46875b53ffb21bc55aec4a2c76472133ea5d1c)
in to the Erlang/OTP master branch.
* The 'Mystical Programming blog' has an amusing article on [non-terminating
C++ template
computations](http://mysticalprogramming.wordpress.com/2014/03/19/how-to-abuse-a-cpp-compiler/)
along with information on how GCC and Clang handle each example.
* Meeting C++ have written up a [list of things likely to make their way in to
C++14](http://meetingcpp.com/index.php/br/items/looking-at-c14.html).
* [Ceemple](http://www.ceemple.com/what-is-ceemple/), an LLVM-based product
for technical computing, has been released. It's marketed as offering a number
of advantages over Python or MATLAB in this space.
* The next Cambridge LLVM Social will [take place on the 26th March,
7.30pm](http://article.gmane.org/gmane.comp.compilers.llvm.devel/71338).
## On the mailing lists
* David Given is working on an architecture that uses integer registers to
store floating point values, and [asks for
advice](http://article.gmane.org/gmane.comp.compilers.llvm.devel/71368) on how
to represent this in tablegen without being stopped dead by "cannot infer all
types in pattern" errors.
* Renato Golin has [kicked off another thread on unwinding and exception
handling and function
attributes](http://article.gmane.org/gmane.comp.compilers.llvm.devel/71340).
He's done a fantastic job of summarising the issues and proposal on moving
forward which means I don't have to feel lazy by suggesting you just go read
the thread if you're interested.
* Arch Robinson asks the list for [advice on improving the SLPVectorizer in
order to help with Julia code he's looking
at](http://article.gmane.org/gmane.comp.compilers.llvm.devel/71307). The
[response](http://article.gmane.org/gmane.comp.compilers.llvm.devel/71308)
from Arnold Schwaighofer is worth a read for anyone interested in hacking in
this area.
* Discussion about a binary format for instrumentation-based profiling data
has
[continued](http://article.gmane.org/gmane.comp.compilers.llvm.devel/71306),
with the suggestion that the format written out by instrumentation need not be
the same as the format read back by the compiler (it could be transformed by
other tools). Justin Bogner has detailed [proposed
requirements](http://article.gmane.org/gmane.comp.compilers.llvm.devel/71434)
for these formats.
* Tim Hill started an interesting discussion by [sharing his experiences from
switching to
Clang](http://article.gmane.org/gmane.comp.compilers.clang.devel/35755). Among
the positives were excellent errors, the static analyzer, compatibility, and
quality of generated code. The main negative is the lack of documentation for
many compiler options. There's general agreement in the responses that this is
a problem that should be fixed in the (hopefully not too distant) future.
* Lang Hames has [proposed an RFC on adding an empty method to
`iterator_range`](http://article.gmane.org/gmane.comp.compilers.llvm.devel/71352).
If debating API design is your cup of tea, prepare to be entertained.
## LLVM commits
* The MIPS64r2-based Octeon CPU has been added.
[r204337](http://llvm-reviews.chandlerc.com/rL204337).
* The ProfileData library, [discussed last
week](http://article.gmane.org/gmane.comp.compilers.llvm.devel/71179) was
committed. [r204482](http://llvm-reviews.chandlerc.com/rL204482),
[r204489](http://llvm-reviews.chandlerc.com/rL204489).
* The constant hoisting pass saw some refactoring and improvements.
[r204431](http://llvm-reviews.chandlerc.com/rL204431),
[r204433](http://llvm-reviews.chandlerc.com/rL204433),
[r204435](http://llvm-reviews.chandlerc.com/rL204435),
[r204537](http://llvm-reviews.chandlerc.com/rL204537).
* The ARM integrated assembler learned how to handle the `.thumb_set`
directive. [r204059](http://llvm-reviews.chandlerc.com/rL204059).
* Assembler directives were added to create version-min load commands for iOS
or Mac OSX. e.g. `.ios_version_min 5,2,0`.
[r204190](http://llvm-reviews.chandlerc.com/rL204190).
* It is now possible to specify the 'noduplicate' attribution for intrinsics.
[r204200](http://llvm-reviews.chandlerc.com/rL204200).
* The TableGen backends documentation was fleshed out a bit.
[r204479](http://llvm-reviews.chandlerc.com/rL204479).
* Scheduling annotations have been added to NEON AArch64 instructions.
[r204505](http://llvm-reviews.chandlerc.com/rL204505).
## Clang commits
* Counters used in instrumentation-based profiling are now represented in a
static array. This is the first commit of a larger project to reduce runtime
overhead (initialization in particular) for instrumentation-based profiling.
[r204080](http://llvm-reviews.chandlerc.com/rL204080). Other commits for
instrumentation-based profiling include
[r204186](http://llvm-reviews.chandlerc.com/rL204186),
[r204379](http://llvm-reviews.chandlerc.com/rL204379),
[r204390](http://llvm-reviews.chandlerc.com/rL204390). There's a matching set
of commits in compiler-rt.
* The deprecated `-faddress-sanitizer`, `-fthread-sanitizer`, and
`-fcatch-undefined-behavior` flags were removed. Users whould use
`-fsanitize=` instead. [r204330](http://llvm-reviews.chandlerc.com/rL204330).
* Support for parsing the OpenMP safelen clause (for 'omp simd') was
committed. [r204428](http://llvm-reviews.chandlerc.com/rL204428).
## Other project commits
* Support was added to MemorySanitizer for 'advanced origin tracking', which
records all locations where an uninitialized value is stored to memory rather
than just the creation point.
[r204152](http://llvm-reviews.chandlerc.com/rL204152).
* The lldb backtrace view has been changed to a process view where you can
expand the process, its threads, and see all frames under each thread.
[r204251](http://llvm-reviews.chandlerc.com/rL204251).
* In compiler-rt, Google have re-licensed the Android ucontext implementation
under the standard dual license of compiler-rt.
[r204128](http://llvm-reviews.chandlerc.com/rL204128).
More information about the llvm-dev
mailing list