- User Since
- Jun 19 2013, 7:38 PM (344 w, 6 h)
Apr 1 2016
Syntax change -- in the way that unused variable warnings are disabled.
Over the past few weeks, I have been researching how to best benchmark this work, and am finalizing an infrastructure that will help with this and other similar extensions (where existing benchmarks do not cover enough of some given extensions' use case).
I am hoping to use that infrastructure next week or so to crunch some useful data for this discussion.
Update the patch with respect to API changes in LLVM since the last version. Of particular interest here:
- The PostDominators API has been restructured as suggested from the last version of this patch, which simplifies this patch.
- The count of invariant range analysis requests has been restricted to non-trivial requests.
Feb 1 2016
Some thoughts going through my head... I'm reading through Keith D. Cooper and Linda Torczon's book, "Engineering a Compiler", 10.3.1 [Eliminating Useless Code]; and here are some excerpts:
Jan 29 2016
In an effort to keep review comments within code review system, I'm uploading a PDF snapshot of the document arguing for post-dominance analysis at https://docs.google.com/document/d/1R-gINRdpxzLy82EZK_ymnVNyOPO-tzW5ksNcHuRvxBs/edit?usp=sharing here.
Jan 26 2016
Why post-dominance analysis? I'm glad you asked. :)
Check out this doc: https://docs.google.com/document/d/1R-gINRdpxzLy82EZK_ymnVNyOPO-tzW5ksNcHuRvxBs/edit?usp=sharing.
Jan 15 2016
I hope I addressed all the comments. Let me know if I missed anything.
Jan 13 2016
Alas, I wanted to address all these comments today, but I ended up being consumed with a bit of data crunching, while building clang with different versions of clang (with and without this patch).
For what it's worth---and my intention was for this to help this ongoing discussion, here are the results:
Jan 8 2016
Fix typo (resulting in warning) in PostDominators.h
Jan 6 2016
Note that uses of invariant_start instructions can be other that invariant_end.
Jan 5 2016
Ensure invariant info is properly shared between multiple passes, e.g., GVN and basic AA, or -On.
Dec 23 2015
I will be running benchmarks over next week and keep you posted. For now, I just want to see if this is headed in the right direction... Please let me know what you think.
Dec 17 2015
Dec 10 2015
Dec 9 2015
To summarize my thoughts after these comments, this is an analysis that should be kept outside of -globalopt, since it does not affect the logic of -globalopt at all... So, I'm working on that.
Dec 8 2015
Dec 4 2015
Update patch based feedback.
pushing in revised patch soon...
Dec 1 2015
Fix typo in patch.
Nov 9 2015
Fix patch (wrong one submitted initially).
Nov 8 2015
Nov 5 2015
Fix diff (wrong one submitted last time).
Reify computed invariant offsets, and while we're at it, cleanup InvariantArgs: move it out of CodeGenModule.h and remove Offsets member field since offsets are already in the start instructions.
Update documentation of invariant_start intrinsic call.
Remove commented out line -- Offsets not needed on invariant_end calls after all.
Oct 23 2015
Oct 22 2015
I have addressed all the feedback so far (Thanks, Nick!) and split the updated version of this patch into 6-7 patches: D14003 (D14008 + D14009), D14004, D14005, D14006 and D14007.
Is this clearer? Would it help to split it up further?
Oct 20 2015
I think I've addressed all the comment by now. I'll be pushing in split-up patches (with corrections) next.