LLVM Weekly - #27, Jul 7th 2014 ============================== If you prefer, you can read a HTML version of this email at <http://llvmweekly.org/issue/27>. Welcome to the twenty-seventh 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 An LLVM code generator has been [merged](https://github.com/MLton/mlton/commit/bf36a151a4b0cc366ba32b5ebea5d8ce25239a0b) into the MLton whole-program optimizing compiler for Standard ML. This was written by Brian Leibig as part of his [Master's thesis](http://www.cs.rit.edu/~mtf/student-resources/20124_leibig_msproject.pdf), which contains more information on its performance and design. Eli Bendersky has [written a tool](http://lists.cs.uiuc.edu/pipermail/cfe-dev/2014-July/037782.html) which converts the output of Clang's `-ast-dump` to HTML. See [here](https://dl.dropboxusercontent.com/u/15602400/template-insts-dump.html) for an example. The code is [available on Github](https://github.com/eliben/llvm-clang-samples/blob/master/tools/htmlize-ast-dump.py). Clang's Microsoft Visual C++ [compatibility page](http://clang.llvm.org/docs/MSVCCompatibility.html) has been updated to reflect the status of the current SVN trunk. As can be seen from the [relevant diff](http://reviews.llvm.org/rL212193), record layout has been marked complete along with RTTI. Lambdas are now marked mostly complete. ## On the mailing lists * Edwin Amsler is [interested in producing an LLVM backend for the 6502 processor](http://lists.cs.uiuc.edu/pipermail/llvmdev/2014-July/074472.html). He later starts a thread asking for [advice on targeting a CPU with no general purpos registers](http://lists.cs.uiuc.edu/pipermail/llvmdev/2014-July/074523.html). David Given [suggests](http://lists.cs.uiuc.edu/pipermail/llvmdev/2014-July/074530.html) it might be worth viewing the 6502 as a machine with 256 byte-sized registers. * Pavel Chupin has written to the list on behalf of Intel to get feedback on [upstreaming support for the x32 ABI](http://lists.cs.uiuc.edu/pipermail/llvmdev/2014-July/074451.html). As you might expect, people are in favour of the idea. The NativeClient team are [also interested](http://lists.cs.uiuc.edu/pipermail/llvmdev/2014-July/074457.html), particularly as NaCl's x86-64 ABI is fairly similar to x32. * Sunil Srivastava has shared a [proposal for an ABI test suite for Clang](http://lists.cs.uiuc.edu/pipermail/cfe-dev/2014-July/037812.html). There is wide support for Sony submitting the implementation for code review. A later response clarifies that of the 400 test files, about 20% are hand-written and the rest come from the test case generator. * In a thread about using the Clang API to extract information about the memory layout of structs, Reid Kleckner [points to the handy -fdump-record-layouts flag](http://lists.cs.uiuc.edu/pipermail/cfe-dev/2014-July/037778.html). * There's a massive thread on [the usability of Phabricator review threads for non-Phabricator users](http://lists.cs.uiuc.edu/pipermail/llvmdev/2014-July/074408.html). There seem to be some issues with email reviews showing up on Phabricator and possibly vice-versa. There's more than I have time to summarize, so those interested are advised to read the thread. ## LLVM commits * The X86 backend now expands atomics in IR instead of as MachineInstrs. Doing the expansions at the IR level results in shorter code and potentially there may be benefit from other IR passes being able to run on the expanded atomics. [r212119](http://reviews.llvm.org/rL212119). * The ARM backend learned the ISB memory barrier intrinsic. [r212276](http://reviews.llvm.org/rL212276). * The X86 backend gained support for `__builtin_ia32_rdpmc` which is used to read performance monitoring counters. [r212049](http://reviews.llvm.org/rL212049). * The peephole optimizer gained new code (currently disabled) to rewrite copies to avoid copies across register banks. [r212100](http://reviews.llvm.org/rL212100). * Control flow graph building code has been moved from MC to a new MCAnalysis library. [r212209](http://reviews.llvm.org/rL212209). * TableGen gained support for MSBuiltin, which allows for adding intrinsics for Microsoft compatibility. [r212350](http://reviews.llvm.org/rL212350). ## Clang commits * MSVC RTTI (run-time type information) implementation has been completed. [r212125](http://reviews.llvm.org/rL212125). * The `__builin_arm_ldaex` and `__builtin_arm_stlex` intrinsics were added. [r212175](http://reviews.llvm.org/rL212175). * Nested blocks are now supported in Microsoft inline assembly. [r212389](http://reviews.llvm.org/rL212389). ## Other project commits * lldb-gdbserver support has been merged for Linux x86-64. [r212069](http://reviews.llvm.org/rL212069). * AddressSanitizer gained support for i686-linux-android. [r212273](http://reviews.llvm.org/rL212273). * libcxxabi gained a CMake build system. [r212286](http://reviews.llvm.org/rL212286). * lld now supports parsing of x86 and ARM/Thumb relocations for MachO. [r212239](http://reviews.llvm.org/rL212239), [r212306](http://reviews.llvm.org/rL212306).