LLVM Weekly - #210, Jan 8th 2018
Welcome to the two hundred and tenth 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 call for papers for the 2018 European LLVM Developers' Meeting has been issued. The Meeting will be held on April 16-17 in Bristol, UK. The submission deadline is February 9th.
The release branch for 6.0.0 has been created and trunk is now 7.0.0. The first release candidate isn't scheduled until Jan 17th.
QDBI is a new open-source LLVM-based Dyanmic Binary Instrumentation Tools from QuarksLab. You can find out more from this recent 34C3 talk.
Dan Liew has open sourced JFS (JIT Fuzzing Solver), a constraint solver built on top of Z3 and LibFuzzer. It works by generating a C++ program where the reachability of an abort() statement is equivalent to finding a satisfying assignment to the constraints, then uses libFuzzer to solve it.
The next Zurich LLVM Social will take place this Thursday 11th at 7pm. It will feature talks on timing side-channels in modern CPUs and PySpark at bare-metal speed.
Kamil Rytarowski has posted an update on NetBSD Memory Sanitizer progress.
On the mailing lists
-
The Meltdown and Spectre attacks have of course been big news in the last week. LLVM patches to mitigate Spectre have started to be posted for discussion: retpoline,
__builtin_load_no_speculate
, and the llvm.nospeculateload intrinsic. Chandler Carruth indicates that Google expect to follow-up with some alternative API ideas to llvm.nospeculateload. -
James Y Knight suggests changing the versioning scheme for the current 'trunk' version. He observes that incrementing the major version immediately upon branching means it's difficult to write reliable checks such as
#if __clang_major__ >= 7
. -
Hideki Saito is looking for feedback on moving the
isLegalMasked*
checks to LoopVectorizationCostModel. -
Nemanja Ivanovic is seeking feedback on legalizing the input operand to
ATOMIC_CMP_SWAP*
by zero-extending. -
Alex Bradbury has outlined the current in-tree uses of custom CCState and is looking for feedback on ideas to remove the need for these, on requirements from out-of-tree backends, and on supporting the same functionality in GlobalISel.
-
Sander De Smalen has shared an RFC on extending the DISubrange count field, which can be used to improve debug information for variable length arrays or SVE vectors.
-
Daniel Neilson has resurrected a set of patches from 2015 to modify memcpy/memmove/memset to have destination and source alignment attributes.
LLVM commits
-
GlobalISel is now enabled at -O0 by default for AArch64. r321655.
-
A new documentation page describing how to contribute to LLVM has been added, detailing how to find topics to work on, how to submit a patch, and where to learn more about LLVM's architecture and internals. r321804.
-
LLVM's OptTable class (in libLLVMOption) gained a
findNearest
method which can be used to implement "did you mean..." responses in LLVM tools for unrecognised options. This functionality was previously only available in the CommandLine library which isn't used by tools like Clang or Swift. r321877. -
An MCSubtargetInfo reference is now pased through target::createMCAsmBackend. This allows subtarget feature support to be easily queried, with a number of follow-on cleanups suggested in the commit message. The suggested ARMAsmBackend cleanup has already been implemented and committed.r321692, r321707.
-
A multi-threaded implementation of llvm-cov's prepareFileReports method results in huge speed improvements for large inputs. r321871.
Clang commits
-
Clang will use a recent addition to the libLLVMOption API to suggest correctly spelled driver options when an unrecognised argument is given. r321917.
-
The
-Wtautological-constant-compare
warning has intentionally limited and is now disabled by default. As described in the commit message, there are a number of cases where the warning may not be correctly given but unhelpful in identifying buggy code. r321691.
Other project commits
Nothing notable this week (that I spotted at least - tips on patches to include always welcome).
Review corner
The LLVM Weekly review corner serves to highlight patches that are stuck waiting awaiting review, or work from first-time contributors. See here for more information and how to submit you work for inclusion. Of course the hope is that highlighting these patches will enable LLVM Weekly readers will step up and help to get them merged. I'll be reporting back each week on any activity generated on these patches, as well as sharing a new batch. If you want your patch included you must submit it via the linked form.
Thanks to Vedant Kumar for giving feedback on last week's patch. I've had no new submissions this week, but Nikolai Kosjar is still looking for reviews on D39903 which allows pretty-printing of declarations through the libclang API.