LLVM Weekly - #61, Mar 2nd 2015
Welcome to the sixty-first 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 https://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.
News and articles from around the web
The biggest headline this week is undoubtedly the release of LLVM/Clang 3.6. See the LLVM 3.6 release notes and the Clang 3.6 release notes for a full run-down of the major changes.
The LLVMSharp C# and .NET bindings to LLVM have been released.
Pyston, the LLVM-based Python JIT developed by Dropbox has had its 0.3 release. It is now minimally self-hosting. You can also see performance results online.
Readers may enjoy this walkthrough of creating a basic compiler with LLVM.
On the mailing lists
-
Diego Novillo has announced Google's intention to work on PGO profiling support in LLVM. We can expect a document soon to give more detail on the plans and stimulate further discussion.
-
Ashutosh Nema is proposing a new loop versioning optimisation. This is where multiple versions of the loop are generated and the implementation chosen based on runtime memory aliasing tests. It was suggested that some recent work on Loop Access Analysis provides some of this functionality.
-
Philip Reames has suggested writing a performance guide for frontend authors. Unsurprisingly, the idea is popular.
-
Zachary Turner has suggested separating embedded Python from the rest of LLDB. As detailed in the post, it is difficult to provide compatibility with the standard Python binary build for Windows and precompiled Python modules.
-
Ahmed Bougacha started a discussion on disabling GlobalMerge, which is currently enabled for ARM and AARch64. Much of the ensuing discussion centers around understanding why there seems to be a performance degradation when using GlobalMerge with LTO.
-
Katya Romanova moved a discussion on a jump threading optimisation bug to llvm-dev. The issue is due to the fact an unreachable block is generated with ill-formed instruction, and there is a lot of follow on discussion about whether passes should generate unreachable blocks.
-
Dibyendu Majumdar wrote to the list to ask about issues eliminating redundant loads. He managed to work out the issue.
LLVM commits
-
Work has started on the move towards opaque pointer types. See the commit messages for more details and help on migrating existing textual IR. r230786, r230794.
-
The PlaceSafepoints and RewriteGCForStatepoints passes have been documented. r230420.
-
The GC statepoints documentation has been cleaned up and extended with example IR, assembly, and stackmaps. r230601.
-
The loop-invariant code motion pass has been refactored to expose its core functionality as utility functions that other transformations could use. r230178.
-
Implementation of support for alloca on MIPS fast-isel has started. r230300.
-
The PowerPC backend gained support for the QPX vector instruction set. r230413.
-
InductiveRangeCheckElimination can now handle loops with decreasing induction variables. r230618.
-
Among other improvements, llvm-pdbdump gained colorized output. r230476.
-
The Forward Control Flow Integrity Pass has been removed as it is being rethought and is currently unused. r230780.
-
The Performance Tips for Frontend Authors document was born. r230807.
Clang commits
- The control flow integrity design docs has been updated to document optimisations. r230458, r230588.