LLVM Weekly - #133, Jul 18th 2016
Welcome to the one hundred and thirty-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.
I'm now back in the UK after being in Boston for the fourth RISC-V workshop along with my colleagues on the lowRISC project to produce a complete open-source SoC. You may be interested in my notes from talks at the event.
News and articles from around the web
The LLVM Foundation is advertising for applicants to become a board member. If you are interested in becoming a board member, note this current application round closes on July 27th.
Sanjoy Das has written a blog post on inter-procedural optimisation and derefinement.
On the mailing lists
-
The RFC on handling strong GC references in LLVM by Sanjoy Das has seen a flood of responses this week. A number of respondents question whether a new type is needed. Sanjoy has summarised the suggested options.
-
Sean Silva suggests the new pass manager should learn about inter-analysis depencies. Sean followed up with a more detailed analysis of the problem which Chandler Carruth responded to.
-
Gor Nishanov has shared version 2 of his coroutine proposal. Additionally, he's written an RFC on coroutine optimisation passes.
-
Alex Denisov is interested in establishing an LLVM Social event in Berlin and invites anyone else interested to get in touch. It seems there was enough interest to set up a Meetup group.
-
Justin Bogner has shared a plea to stop using target-specific intrinsics in generic code, along with a patch that starts to improve things. All responses are strongly in favour of this direction.
-
Naoki Shibata has, along with Hal Finkel, proposed the inclusion of the SLEEF vectorized math library. As Hal notes, Intel have been contributing support for their SVML library, but a solution is still needed that is easily portable to other architectures.
LLVM commits
-
GVNHoist, a code hoisting pass based on global value numbering has been added. This hoists duplicated computations with the goal of reducing the size of functions before inline heuristics so as to reduce the total cost of function inlining. r275561.
-
The first patch implementing 'hotness' attributes has landed. Currently, for missed optimisation remarks for loop distribution it will indicate the hotness (the multiplication of the block frequency with the function entry count). r275583.
-
A new LazyBFI (lazy block frequency info) pass was added. With this pass, block frequencies are computed only when the results are explicitly requested by the analysis client. r275250.
-
LLVM's ADT library gained an
LLVM_MARK_AS_BITMASK_ENUM
define, which can be used to enable bitwise operations on enums without astatic_cast
. r275292. -
llvm-cov learnt to use multiple threads to speed up report generation. r275321.
-
The XRay function tracing framework is starting to land, with the first patch adding support for entry and exit sleds for functions. r275367.
-
An improved algorithm is now used for selecting a base constant in constant hoisting. r275382.
-
Various SelectionDAG methods (getLoad, getStore, and more) have been modified to take a single flags argument (bitset) rather than multiple booleans. r275592.
-
CFLAA gained an initial 'CFLAnders' implementation. r275602.
Clang commits
-
-fxray-instrument
and-fxray-instruction-threshold
were added to control XRay function tracing. r275330. -
Implementation of C++17's init-statement for
if
andswitch
has been completed now semantic analysis and code generation has been added. r275350. -
The new
-fno-pch-timestamp
option will disable inclusion of timestamps in a PCH file, and is intended to allow distributed build systems to use PCH. r275267. -
clang-rename gained some documentation. r275388.