LLVM Weekly - #155, Dec 19th 2016
Welcome to the one hundred and fifty-fifth 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
LLVM's new versioning scheme has been announced on the LLVM blog. LLVM's version number will now increase by 1.0 for each major release, i.e. the next release will be 4.0 and the release 6 months later will be 5.0.
The schedule for the 2017 FOSDEM LLVM devroom has been announced. It will take place on February 5th 2017 in Brussels.
On the mailing lists
-
Davide Italiano has presented a summary analysis of how LLVM's middle-end has been getting slower over the past 6 months. InstCombine, GVN, and CorrelatedValuePropagation are amongst the most costly passes on Davide's experiments. Daniel Berlin had an interesting response to the observation that GCC seems to use more sophisticated algorithms (or at least, its source references more papers).
-
Last week's LLD status update thread has had a huge number of responses over the past week. Many of these centered around a desire for LLD to expose a library interface. Sean Silva has summarised many of the common suggested use-cases and his personal view on them. As Rui noted, much of the arguments in the thread seemed to stem from communication issues.
-
David Blaikie reports that he's added GDB pretty printers for a selection of LLVM ADTs.
-
Sanjay Patel kicked off a discussion about analysis using the nonnull attribute.
LLVM commits
-
The processing of @llvm.assume intrinsics has been made more efficient by using operand bundles. The old AssumptionCache has been removed. r289755, r289756.
-
The ARM backend now supports codegen for execute-only code (i.e. code intended to placed in a page without read permissions). r289784.
-
LLVM's aggressive dead code elimination pass gained the ability to remove unnecessary control flow. This is the final piece of a series of patches to achieve that goal. r289548.
-
The AVR backend gained a function instrumentation pass, which adds calls to hook functions. r289641.
-
The PIC relocation model is now used by default for PPC64 ELF. This change matches GCC behaviour. r289743.
-
Loop vectorisation of loops with conditional stores is now enabled by default. r289975.
Clang commits
-
clang-tools-extra gained new checkers. cppcoreguidelines-no-malloc will flag up uses of C-style memory management (malloc and friends) in C++ code, while performance-type-promotio-in-math-fn will suggest calls to double-precision math.h functions with float arguments be changed to the single-precision version. r289546, r289627.
-
inrange annotations are now used on vtable getelementptr. This allows the optimiser to split vtable groups. r289585.
-
You can now set the default linker when building clang through
CLANG_DEFAULT_LINKER
. r289668. -
Clang gained a testbed and skeleton of a new expression parser. r290004.