LLVM Weekly - #24, Jun 16th 2014
Welcome to the twenty-fourth 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. 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@asbradbury.org, or @llvmweekly or @asbradbury on Twitter.
The canonical home for this issue can be found here at llvmweekly.org.
News and articles from around the web
Philip Reames has written another blog post about the support for precise relocating GC he has been working on with his colleagues. In this post, he describes the IR restrictions for late safepoint placement.
Videos from this year's EuroLLVM conference are now available. Enjoy!
Evan Swick has written a blog post about Swift internals using information gleaned from reverse engineering Swift binaries and the runtime.
The next Paris LLVM social will take place on June 23rd.
The next Cambridge LLVM Social will take place on the 25th of June.
On the mailing lists
George Burgess has posted to the list to announce he'll be interning with Google and working on a new alias analysis algorithm for LLVM. He will be implementing an algorithm based on this paper. His full proposal is available here.
Tim Northover has written an RFC on adding cmpxchg weak to the LLVM IR. This seems to have been rapidly accepted as patches were commited this week.
Mark Tullsen is working on a tool that allows programmers to write custom program properties in a high level DSL. They are using libclang but are missing the ability to perform transformations on the AST. David Chisnall gives a good motivation for why AST transformations are not supported.
Apple are advertising for engineers to join their Swift team. This started a discussion about what the rules about job postings to the LLVM list should be and also elicited another response from Chris Lattner on whether Swift will be open-sourced. "You can imagine that many of us want it to be open source and part of llvm, but the discussion hasn't happened yet, and won't for some time."
Alp Toker has announced to those using LLVM that the llvm/Config/config.h header is becoming internal to the LLVM source tree. Out-of-tree LLVM-based projects should be updated.
Tom Stellard has announced to the list that
setOperationAction(ISD::SELECT_CC, MVT::Other, Expand)
is no longer supported and you must explicitly set theSELECT_CC
operations for each supported type.A pre-reminder for LLVM 3.5. The process will be starting in mid-July (more details to come later).
LLVM commits
A weak variant of cmpxchg has been added to the LLVM IR, as has been argued for on the mailing list. Weak cmpxchg allows failure and the operation returns
{iN, i1}
(in fact, for uniformity all cmpxchg instructions do this now). According to the commit message, this change will mean legacy assembly IR files will be invalid but legacy bitcode files will be upgraded during read. r210903.X86 FastISel gained support for handling a bunch more intrinsics. r210709, r210720 and more. FastISel also saw some target-independent improvements r210742.
This week there were many updates to the MIPS backend for mips32r6/mips64r6. e.g. r210899, r210784 and many more.
NoSignedWrap, NoUnsignedWrap and Exact flags are now exposed to the SelectionDAG. r210467.
Support has been added for variable length arrays on the Windows on ARM Itanium ABI. r201489.
Some simple reordering of fields in Value and User saves 8 bytes of padding on 64-bit. r210501.
FastISel will now collect statistics on when it fails with intrinsics. r210556.
The MIPS backend gained support for jr.hb and jalr.hb (jump register with hazard barrier, jump and link register with hazard barrier). r210654.
AArch64 gained a basic schedule model for the Cortex-A57. r210705.
LLVM has transitioned to using
std::error_code
instead ofllvm::error_code
. r210687.
Clang commits
The
-Wdate-time
preprocessor warning from GCC has been implemented. This is useful when trying to create reproducible builds. r210511.Loop unroll pragma support was added. r210667.
Yet more progress has been made on MS ABI compatibility. e.g. r210813, r210637.