LLVM Weekly - #191, Aug 28th 2017
Welcome to the one hundred and ninety-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
LLVM 5.0.0-rc3 has now been tagged. As Hans Wennborg makes clear, the hope is this will be a true "release candidate" and no additional changes will be needed prior to the final release.
The Flang Fortran front-end to LLVM has been announced. The GitHub repo appeared with little fanfare a few months ago, but this announcement clarifies the current state of the codebase and points to a number of new mailing lists for those wanting to collaborate on the effort.
Emscripten is making progress towards using the upstream LLVM WebAssembly backend by default.
The LLVM Heat Printer utility colours callgraphs or CFGs based on execution frequency.
unformat is a cunning tool which generates an appropriate .clang-format file for a given codebase, based on the conventions that are currently being used.
On the mailing lists
-
I've been considering a slight expansion to LLVM Weekly's format and would greatly appreciate additional feedback. Specifically, I'm looking to introduce a 'review corner' section to help patch authors advertise their work when it's stuck in the review process, in the hope of attracting more reviewers. It may also be useful to highlight patches from first-time contributors. I've written up an RFC on this which goes in to more detail about the motivation and how it might work.
-
Paul Robinson has revived the issue of moving to C++11/14 being the default in a future Clang release. Sylvestre Ledru reported that such a move would resolve more than 70 build issues in Debian.
-
Tom Stellard wonders if anyone is still using the LLVM python bindings, and if they can be removed from the tree. If they are useful to you or you're able to help maintain them, now is the time to step up.
-
Malhar Thakkar has shared his final report on his GSoC project. "The aim of my project was to add support to RetainCountChecker to perform reference counting of objects in frameworks written in C, primarily for the Integer Set Library (ISL)."
-
Martin J. O'Riordan started a thread on extending tablegen's foreach to work with multiclass and defm. The thread then moved on to consider possible alternatives to TableGen, e.g. Python.
-
Péter Szécsi has shared some measurements related to loop unrolling in the Clang Static Analyzer (time taken for analysis and coverage).
-
Alex Bradbury started a thread on separating instruction and pattern definitions in LLVM backends. There seemed to be support for this approach, though Daniel Sanders warned about gotchas related to inference of properties. [Editor's note: This discussion actually happened last week, but I forgot to include it. The RISC-V patches awaiting review have been updated to use this approach (and again, I'd really appreciate if anyone has time to review so I can get more of these landed). I've been working on patches to allow guessInstructionProperties=0 to be set, which helps to avoid surprises with inferred instruction properties.]
-
Sam Elliott has posted a heads-up about the new optimization remark emitter API. All in-tree passes have been migrated, but out-of-tree passes will need similar modifications.
-
Jan Kratochvil is seeking input on supporting the DWZ 'compressed' DWARF format in LLDB.
LLVM commits
-
A backend for the ARC processor core has been added. r311667.
-
A new library, FuzzMutate has been committed. This provides structured fuzzing for LLVM IR. r311402.
-
libFuzzer has been moved from LLVM to compiler-rt. r311405.
-
Cache size and associativity can now be modeled in TargetTransformInfo. r311647.
-
The X86 backend has become better at folding read-modify-write sequences to X86 read-modify-write instructions. r311806.
-
The Cortex-A75 and A-55 are now recognised by LLVM. r311316.
-
MC-layer support for ARMv8.3-A Javascript conversion operations has been added. r311448.
-
Debug messages have been added to SelectionDAG getNode methods, to aid debugging instruction selection. Extra debug messages have also been added to AArch64 legalisation and custom lowering. r311444, r311533.
-
The llvm.experimental.constrained.fma intrinsic has been introduced. r311629.
Clang commits
-
The new
-fclang-abi-compat
flag can be used to request Clang attempt to remain ABI-compatible with previous ABI versions. r311823. -
The StmtDataCollector class in clang analyzer is now customisable through subclassing and use of the helpers in StmtDataCollectors.inc. r311569.
-
Clang refactoring gained initial support for AST selections. r311655.
-
The
-fsanitize-coverage=pc-table
andfsanitize-coverage=inline-8bit-counters
command line options have been documented. r311719.
Other project commits
-
CMakeLists.txt for building and running SPEC2017 has been added to the LLVM test-suite. r311395.
-
LLDB learned to support the DWP (DWARF package) debug info format. r311775.
-
Polly now tracks and can print a range of additional statistics about the optimisations it applies. r311553.
-
More DOE proxy apps have been added to the LLVM test suite. miniAMR (stencil calculations), miniFE (finite element codes), and Pathfinder (graph search). r311398, r311411, r311413.