LLVM Weekly - #184, Jul 10th 2017
Welcome to the one hundred and eighty-forth 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
Pascal Cuoq and John Regehr have authored a rather epic blog post - Undefined Behaviour in 2017. This summarises the current state of undefined behviour in C and C++, areas where tools can help and areas where they currently fall short.
LLVM 4.0.1 has been released. This is the first bug-fix release from the LLVM 4.0.x branch.
Stefan Gränitz's JitFromScratch repository contains a collection of examples on building a JIT using LLVM and ORC, and has just been updated.
On the mailing lists
-
Andrew Kaylor kicked off a discussion on how to handle a particular case of C undefined behaviour in LLVM. Specifically, cases where code does
p = (char*)0 + n
to create a pointer that is later dereferenced. Chris Lattner prefers proposed solution 3, which introduces special-casing in the frontend to generate valid IR for this idiom. David Majnemer shared a a well-written argument on why addressing this problem at the IR level is unattractive. -
Mandeep Singh Grang has shared an update on efforts to uncover and fix sources of non-determinism in LLVM, and proposed a set of next steps.
-
Quentin Colombet has proposed making GlobalISel a non-optional part of the build. As he points out, it has been built by default for the last 6 months.
-
Tom Stellard has proposed adding number of new fields to bugzilla, designed to track bug fixes and merges into the stable release branch.
LLVM commits
-
The GlobalISel TableGen'ned matcher and emitter has been converted to a state machine, reducing compile time and memory allocations. r307079, r307133, r307159.
-
A spelling corrector can now be used for assembler input, suggesting similar instruction mnemonics if an invalid mnemonic is input. So far this is only used by the ARM backend. r307148.
-
A Safepoint IR Verifier has been added, to help finding GC relocation bugs. r307112.
-
The opt-viewer tools will now be installed to
<install>/share/opt-viewer/
. r307285. -
The LoopStrengthReduce pass has gained new heuristics to narrow the search space. r307269.
Clang commits
-
The
-Wcast-qual
warning has been implemented for C++, providing warnings for C-style casts just as GCC'sWcast-qual
does. r307045. -
The MakeSmartPtrFunction option allows the customisation of the output of the modernize-make-shared/unique checks. r307130.