LLVM Weekly - #253, November 5th 2018
Welcome to the two hundred and fifty-third 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
If you're lucky enough to be at SC18 in Dallas this year, there is a lot of LLVM-related talks and meetups to check out. On Sunday 11th November you'll want to attend the LLVM Social and Flang meetup. Then on Monday 12th you can attend the Fifth Workshop on the LLVM Compiler Infrastructure in HPC. Then on Tuesday 13th you can attend the LLVM in HPC: What's New? BoF as well as Hal Finkel's talk "Teaching LLVM's Optimizer to Understand OpenMP" at the OpenMP Booth (1.45pm-2.15pm).
The call for papers if open for the LLVM Performance Workshop at CGO 2019. The workshop will take place on 16th Feb 2019 in Washington DC. The deadline for submissions is December 15.
LLVM 7.0.1-rc2 has been tagged. Time to get testing!
John Regehr has a short blog post on recently added implicit integer cast sanitizers.
Herb Sutter has written a pre-trip report for the San Diego ISO C++ standards meeting that is starting today.
On the mailing lists
-
Justin Bogner started a discussion on dealing with out-of-tree changes and the proposed LLVM git monorepo. He describes the issues faced for maintainers of out-of-tree targets when trying to migrate to the monorepo, which has a completely different history to the previous git mirrors. James Y Knight reports he's preparing a tool to help rewrite these downstream repositories.
-
libc++ is not using
always_inline
anymore for visibility purposes. A 7% reduction in size of the Chrome binary was reported after this patch. -
Nico Weber gave a report from his round-table on the GN meta-build system. He is seeking feedback on adding GN build files to the repo. This generated substantial discussion, with a number of concerns raised about the maintenance burden of adding a second build system (after only relatively recently dropping autoconf+Make).
-
Eric Schweitz has written an RFC on adding debug information to LLVM to support Fortran.
-
Mircea Trofin proposes adding support for trace profile driven cache prefetching insertion for LLVM. The LLVM-side support takes as input a profile in afdo format which contains prefetch hint recommendations.
-
David Greene has shared an RFC on adding a system model to LLVM. This would capture information caches, prefetch heuristics, streaming memory buffers etc. This is based on the system model used in the Cray compiler.
-
Louis Dionne has started a discussion on the per-translation unit ABI guarantee of libc++. This thread proposes dropping the guarantee that TUs can be linked together even if they use different headers of libc++ and is actively seeking feedback. Is this guarantee important to you? If so, speak up.
-
Joey Gouly proposes using TableGen to define OpenCL builtins and generate a trie and tables for recognising and constructing the thousands of function declarations.
-
John McCall offers a great summary of the challenges of using LLVM IR for high-level optimisations.
-
David Greene started a discussion on the LLVM RFC process. Kristina Brooks raised concerns that RFCs often go without many responses on the mailing lists.
LLVM commits
-
-Wimplicit-fallthrough
is now enabled when building LLVM. r345887. -
The
llvm.sponentry
intrinsic was added in order to correctly support setjmp on the AArch64 Windows platform. r345909. -
The MachineVerifier is now enabled by default for X86. r345593.
-
The DAGCombiner learned to narrow vector binops when extraction is cheap. r345602.
-
New constrained intrinsics for maxnum and minnum were added. These can be used when a specified rounding mode or floating-point exception behaviour is required. r345650.
-
TableGen's PredicateExpander now allows more complex constraints to be given on instruction operands for use in complex scheduling predicates. r345714.
-
The Microsoft demangler now exposes its AST publicly for use in LLDB. r345837.
Clang commits
-
The implicit integer conversion sanitizer is now fully functional. r345660.
-
clang-query gained an API for non-exclusive output. Allowing e.g. AST dumping and diagnostics output at once. r345522.
Other project commits
-
Users wanting to link together translation units built with different versions of libc++ headers into the same final linked image must define the
_LIBCPP_HIDE_FROM_ABI_PER_TU
macro to 1. r345516. -
By setting
LIBCXX_ABI_NAMESPACE
it's possible for users to customise the libc++ versioning namespace and build custom versions of libc++ that can be linked into binaries with other libc++ versions without causing symbol conflicts. r345657.