<div dir="ltr"><div>Alex,<br><br>Just wanted to say that this newsletter is *extremely* useful for someone like me -- who is interested in clang / llvm evolution, but doesn't have time to keep track of all the mailing lists.<br>
<br>Thank you! -- keep up the good work!<br><br></div>Andrey<br><br></div><div class="gmail_extra"><br><br><div class="gmail_quote">On Mon, Feb 3, 2014 at 6:23 PM, Alex Bradbury <span dir="ltr"><<a href="mailto:asb@asbradbury.org" target="_blank">asb@asbradbury.org</a>></span> wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">LLVM Weekly - #5, Feb 3rd 2014<br>
==============================<br>
<br>
If you prefer, you can read a HTML version of this email at<br>
<<a href="http://llvmweekly.org/issue/5" target="_blank">http://llvmweekly.org/issue/5</a>><br>
<br>
Welcome to the fifth issue of LLVM Weekly, a weekly newsletter (published<br>
every Monday) covering developments in LLVM, Clang, and related projects.<br>
LLVM Weekly is brought to you by [Alex Bradbury](<a href="http://asbradbury.org" target="_blank">http://asbradbury.org</a>).<br>
Subscribe to future issues at <<a href="http://llvmweekly.org" target="_blank">http://llvmweekly.org</a>> and pass it on to anyone<br>
else you think may be interested. Please send any tips or feedback to<br>
<<a href="mailto:asb@asbradbury.org">asb@asbradbury.org</a>>, or @llvmweekly or @asbradbury on Twitter. I've been<br>
keeping the [@llvmweekly Twitter account](<a href="https://twitter.com/llvmweekly" target="_blank">https://twitter.com/llvmweekly</a>)<br>
updated throughout the week, so follow that if you want more frequent news<br>
updates.<br>
<br>
I'm afraid my summary of mailing list activities is much less thorough than<br>
usual, as I've been rather busy this weekend both moving house and suffering<br>
from a cold. Do ping me if you think I've missed anything important.<br>
<br>
## News and articles from around the web<br>
<br>
This weekend there was an LLVM devroom at FOSDEM 2014. Slides have [already<br>
been posted](<a href="http://llvm.org/devmtg/2014-02/" target="_blank">http://llvm.org/devmtg/2014-02/</a>) for some of the talks. Hopefully<br>
videos will follow.<br>
<br>
Pocl (Portable Computing Language) 0.9 has been<br>
[released](<a href="http://portablecl.org/pocl-0.9.html" target="_blank">http://portablecl.org/pocl-0.9.html</a>). Pocl aims to be an efficient<br>
MIT-licensed implementation of the OpenCL 1.2 standard.<br>
<br>
Mike Ash has published a useful [introduction to<br>
libclang](<a href="https://mikeash.com/pyblog/friday-qa-2014-01-24-introduction-to-libclang.html" target="_blank">https://mikeash.com/pyblog/friday-qa-2014-01-24-introduction-to-libclang.html</a>).<br>
<br>
Ever wanted to use LLVM from within Rust? This [blog post will tell you<br>
how](<a href="http://hydrocodedesign.com/2014/01/31/llvm-with-rust/" target="_blank">http://hydrocodedesign.com/2014/01/31/llvm-with-rust/</a>).<br>
<br>
Phoronix has published a [benchmark of Clang 3.4 vs GCC 4.9.0 20140126 on AMD<br>
Kaveri](<a href="http://www.phoronix.com/scan.php?page=article&item=amd_kaveri_gcc49clang34&num=1" target="_blank">http://www.phoronix.com/scan.php?page=article&item=amd_kaveri_gcc49clang34&num=1</a>).<br>

<br>
## On the mailing lists<br>
<br>
* A question about the status of [SEH support in<br>
LLVM/Clang](<a href="http://article.gmane.org/gmane.comp.compilers.clang.devel/34747" target="_blank">http://article.gmane.org/gmane.comp.compilers.clang.devel/34747</a>)<br>
was quickly derailed after the expiration of a key patent on SEH in June was<br>
brought up. The conversation moved to LLVM's [developer policy on<br>
patents](<a href="http://llvm.org/docs/DeveloperPolicy.html#patents" target="_blank">http://llvm.org/docs/DeveloperPolicy.html#patents</a>) and whether the<br>
LLVM or Clang mailing lists are a suitable place for their discussion. In the<br>
end, Chris Lattner [chimes in to clarify the<br>
policy](<a href="http://article.gmane.org/gmane.comp.compilers.clang.devel/34810" target="_blank">http://article.gmane.org/gmane.comp.compilers.clang.devel/34810</a>). The<br>
technical discussion [moved to this<br>
thread](<a href="http://article.gmane.org/gmane.comp.compilers.llvm.devel/69945" target="_blank">http://article.gmane.org/gmane.comp.compilers.llvm.devel/69945</a>).<br>
<br>
* Pekka Jääskeläinen answers a bugpoint question with a [useful guide on using<br>
bugpoint with a custom exec-command<br>
option](<a href="http://article.gmane.org/gmane.comp.compilers.llvm.devel/69807" target="_blank">http://article.gmane.org/gmane.comp.compilers.llvm.devel/69807</a>).<br>
<br>
* Nick Lewcky suggests [making datalayout a mandatory part of an LLVM<br>
module](<a href="http://article.gmane.org/gmane.comp.compilers.llvm.devel/69890" target="_blank">http://article.gmane.org/gmane.comp.compilers.llvm.devel/69890</a>).<br>
<br>
* Chandler Carruth has proposed in an RFC that [BlockFrequency is the wrong<br>
metric](<a href="http://article.gmane.org/gmane.comp.compilers.llvm.devel/70027" target="_blank">http://article.gmane.org/gmane.comp.compilers.llvm.devel/70027</a>) for<br>
profile info.<br>
<br>
* Sara Elshobaky asks for advice on finding the [number of instructions<br>
executed when running LLVM bytecode under<br>
lli](<a href="http://article.gmane.org/gmane.comp.compilers.llvm.devel/69797" target="_blank">http://article.gmane.org/gmane.comp.compilers.llvm.devel/69797</a>). There<br>
are a number of suggestions including callgrind, Pin, and other similar tools.<br>
<br>
* Markus Timpl raises an interesting question about [describing a load<br>
instruction that changes the value of two<br>
registers](<a href="http://article.gmane.org/gmane.comp.compilers.llvm.devel/69852" target="_blank">http://article.gmane.org/gmane.comp.compilers.llvm.devel/69852</a>).<br>
<br>
* Baoshan Pang writes to the LLVM list asking [how to start getting involved<br>
in LLVM](<a href="http://article.gmane.org/gmane.comp.compilers.llvm.devel/69973" target="_blank">http://article.gmane.org/gmane.comp.compilers.llvm.devel/69973</a>). If<br>
you've emailed me suggesting you'd like more pointers on how to get stuck in<br>
to LLVM, this thread is for you.<br>
<br>
## LLVM commits<br>
<br>
* The ARM exception handling ABI<br>
([EHABI](<a href="http://infocenter.arm.com/help/topic/com.arm.doc.ihi0038a/IHI0038A_ehabi.pdf" target="_blank">http://infocenter.arm.com/help/topic/com.arm.doc.ihi0038a/IHI0038A_ehabi.pdf</a>))<br>
is now enabled by default.<br>
[r200388](<a href="http://llvm-reviews.chandlerc.com/rL200388" target="_blank">http://llvm-reviews.chandlerc.com/rL200388</a>).<br>
<br>
* TargetLowering gained a hook which targets can implement to indicate whether<br>
a load of a constant should be converted to just the constant.<br>
[r200271](<a href="http://llvm-reviews.chandlerc.com/rL200271" target="_blank">http://llvm-reviews.chandlerc.com/rL200271</a>).<br>
<br>
* Line table debug info is now supported for COFF files when targeting win32.<br>
[r200340](<a href="http://llvm-reviews.chandlerc.com/rL200340" target="_blank">http://llvm-reviews.chandlerc.com/rL200340</a>).<br>
<br>
* LLVM now has the beginnings of a line editor library, initially to be used<br>
by clang-query but possibly consumed by LLDB as well in the future.<br>
[r200595](<a href="http://llvm-reviews.chandlerc.com/rL200595" target="_blank">http://llvm-reviews.chandlerc.com/rL200595</a>).<br>
<br>
* The R600 backend learned intrinsics for `S_SENDMSG` and `BUFFER_LOAD_DWORD*`<br>
instructions. [r200195](<a href="http://llvm-reviews.chandlerc.com/rL200195" target="_blank">http://llvm-reviews.chandlerc.com/rL200195</a>),<br>
[r200196](<a href="http://llvm-reviews.chandlerc.com/rL200196" target="_blank">http://llvm-reviews.chandlerc.com/rL200196</a>).<br>
<br>
* The loop vectorizer gained a number of flags to help experiment with<br>
changing thresholds. It now also only unrolls by powers of 2.<br>
[r200212](<a href="http://llvm-reviews.chandlerc.com/rL200212" target="_blank">http://llvm-reviews.chandlerc.com/rL200212</a>),<br>
[r200213](<a href="http://llvm-reviews.chandlerc.com/rL200213" target="_blank">http://llvm-reviews.chandlerc.com/rL200213</a>).<br>
<br>
* The loop vectorizer now supports conditional stores by scalarizing (they are<br>
put behind an if). This improves performance on the SPEC libquantum benchmark<br>
by 4.15%.<br>
[r200270](<a href="http://llvm-reviews.chandlerc.com/rL200270" target="_blank">http://llvm-reviews.chandlerc.com/rL200270</a>).<br>
<br>
* MCSubtargetInfo is now explicitly passed to the `EmitInstruction`,<br>
`EmitInstTo*`, `EncodeInstruction` and other functions in the MC module.<br>
[r200345](<a href="http://llvm-reviews.chandlerc.com/rL200345" target="_blank">http://llvm-reviews.chandlerc.com/rL200345</a>) and others.<br>
<br>
* llvm-readobj learned to decode ARM attributes.<br>
[r200450](<a href="http://llvm-reviews.chandlerc.com/rL200450" target="_blank">http://llvm-reviews.chandlerc.com/rL200450</a>).<br>
<br>
* Speculative execution of llvm.{sqrt,fma,fmuladd} is now allowed.<br>
[r200501](<a href="http://llvm-reviews.chandlerc.com/rL200501" target="_blank">http://llvm-reviews.chandlerc.com/rL200501</a>).<br>
<br>
## Clang commits<br>
<br>
* Position Independent Code (PIC) is now turned on by default for Android<br>
targets. [r200290](<a href="http://llvm-reviews.chandlerc.com/rL200290" target="_blank">http://llvm-reviews.chandlerc.com/rL200290</a>).<br>
<br>
* The Parser::completeExpression function was introduced, which returns a list<br>
of completions for a given expression and completion position.<br>
[r200497](<a href="http://llvm-reviews.chandlerc.com/rL200497" target="_blank">http://llvm-reviews.chandlerc.com/rL200497</a>).<br>
<br>
* The default CPU for 32-bit and 64-bit MIPS targets is now mips32r2 and<br>
mips64r2 respectively. [r200222](<a href="http://llvm-reviews.chandlerc.com/rL200222" target="_blank">http://llvm-reviews.chandlerc.com/rL200222</a>).<br>
<br>
* The ARM and AArch64 backends saw some refactoring to share NEON intrinsics.<br>
[r200524](<a href="http://llvm-reviews.chandlerc.com/rL200524" target="_blank">http://llvm-reviews.chandlerc.com/rL200524</a>) and others.<br>
<br>
## Other project commits<br>
<br>
* Compiler-rt gained a cache invalidation implementation for AArch64<br>
[r200317](<a href="http://llvm-reviews.chandlerc.com/rL200317" target="_blank">http://llvm-reviews.chandlerc.com/rL200317</a>).<br>
<br>
* Compiler-rt now features an optimised implementation of `__clzdi2` and<br>
`__clzsi2` for ARM. [r200394](<a href="http://llvm-reviews.chandlerc.com/rL200394" target="_blank">http://llvm-reviews.chandlerc.com/rL200394</a>).<br>
<br>
* Compiler-rt's CMake files will now compile the library for ARM. Give it a go<br>
and see what breaks. [r200546](<a href="http://llvm-reviews.chandlerc.com/rL200546" target="_blank">http://llvm-reviews.chandlerc.com/rL200546</a>).<br>
<br>
* The iohandler LLDB branch was merged in. The commit log describes the<br>
benefits. [r200263](<a href="http://llvm-reviews.chandlerc.com/rL200263" target="_blank">http://llvm-reviews.chandlerc.com/rL200263</a>).<br>
<br>
_______________________________________________<br>
LLVM Developers mailing list<br>
<a href="mailto:LLVMdev@cs.uiuc.edu">LLVMdev@cs.uiuc.edu</a>         <a href="http://llvm.cs.uiuc.edu" target="_blank">http://llvm.cs.uiuc.edu</a><br>
<a href="http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev" target="_blank">http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev</a><br>
</blockquote></div><br></div>