LLVM Weekly - #150, Nov 14th 2016
Welcome to the one hundred and fiftieth 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 author of the Cretonne code generator has written a document comparing it to LLVM. There has also been discussion on using Cretonne as a backend for Rust.
You may be interested in the recently released 'bloaty' tool, a size profiler for binaries.
There will be an LLVM social today in Salt Lake City, which should be convenient for anyone attending SC16.
The next LLVM social in Paris will take place on November 22nd. Note registration is required.
On the mailing lists
-
Renato Golin has now shared the final results for the survey on moving LLVM development to GitHub. As Chris Lattner comments, there is clear support for moving to GitHub in some way although the multirepo vs monorepo debate is far from over.
-
Chris Bieneman has posted an RFC on creating a new ClangDebuggerSupport library. This would allow code currently in LLDB which relies on internal Clang details to be maintained alongside the Clang source. "The long-term goal of this library is to provide the implementation for what could some day become a defined
debugger<->frontend
interface for providing modularized (maybe even plugin-based) language debugging support in LLDB." -
Serge Pavlov has updated his proposal on adding configuration file support to Clang.
-
Bob Haarman is interested in rewriting the recently added opt-viewer tool in C++ to overcome performance issues found when using the current Python implementation on large codebases.
-
Igor Laevsky proposes adding 'atomic' versions of llvm.{memcpy,memmove,memset} intrinsics. These would better match the semantics of languages like Java. As was pointed out, calling these versions 'atomic' is perhaps misleading, as it is only the per-element accesses that are atomic.
-
Jack Andersen has shared an RFC on target-independent small data section handling.
-
Sanjay Patel wonders if LLVM might benefit from IR intrinsics for integer min/max. A key motivation is that there are multiple ways of specifying it in IR and it's not clear which is canonical. Having a canonical form makes it easier for the relevant optimisation passes. There hasn't been much support for adding a new intrinsic in the responses so far.
-
Chris Lattner has clarified that the intent for the Apache 2 attribution exception that LLVM ends up with is to allow LLVM runtimes to be used without attribution.
LLVM commits
-
The previously proposed type-safe general purpose formatting library has been added in the form of the
llvm::formatv
function. r286682. -
Initial documentation for XRay in LLVM has been committed. r286319.
-
getelementptr indices can now carry an
inrange
attribute. r286514. -
Scripts to aid working with a git monorepo have been committed to the LLVM tree. Currently only 'push' from the monorepo is supported. Support has also been added to the CMake build system for monorepo-like directory layout (at this point, still unofficial). r286138, r286162.
-
SystemZ's tablegen instruction definitions have undergone some refactoring. r286263, r286268.
-
Support was dropped for 'old style' scalar type-based alias analysis tags, though the textual and bitcode 'upgrade' code is still present. r286291.
-
A new formatter was added to help pretty printing hex bytes into a
raw_ostream
. r286316. -
Operand bundles are no longer considered 'experimental'. r286428.
-
LLVM gained an initial
llvm-strings
tool, as a replacement to the binutils strings. It is not yet feature complete. It feels like contributing towards feature parity with binutils strings might be a good starter project for someone wanting to contribute to LLVM. r286556. -
Basic plumbing has been added for GlobalISel with the ARM backend - enough to select a
ret void
. r286573. -
ORC RPC utilities have seen a refactoring and some new features, which are described in the commit message. r286620.
-
The AMDGPU backend now supports half-precision floats. r286753.
Clang commits
-
The output of
-ast-print
is now valid C++ code, instead of almost valid C++ code. r286439. -
A new optimisation option,
-Og
was added. In the future, this may disable certain optimisation in order to improve debuggability. r286602.
Other project commits
-
LLD now supports the
--symbol-ordering-file
argument. The linker will use the passed symbols file to sort sections in output, which can help to reduce startup time. r286440. -
LLD has started to insert its version information in the .comment section of its output. r286496.
-
ThreadSanitizer can now be used to check OpenMP programs. r286115.