Oct 24 2016
Oct 6 2016
rebase and update to new df_iterator interface
Oct 5 2016
Any additional suggestions for this diff?
Oct 3 2016
For illustration, this is what the client code looks like (abstracted a bit) for at least one back edge in a loop.
(Note this code is still order dependent in that the specific edges selected as back edges is order dependent for irreducible loops but is well defined otherwise).
Oct 1 2016
Sep 28 2016
Sep 26 2016
Sep 19 2016
Respond to David's comments
Sep 9 2016
Introduce CFLive field to mark blocks whose control dependence sources should be live; use this for PHI predecessors and blocks with live operations
Sep 7 2016
Change handling of PHI nodes to force predecessors live
Sep 6 2016
I ran this test:
Sep 5 2016
Sep 1 2016
Aug 26 2016
Cleanup comments and small refactorings
Aug 25 2016
Remove code that is functionally redundant.
Aug 24 2016
Expand comments on actions taken by makeLivePhiNodeInputs
Aug 23 2016
Use auto keyword
What should we do at this point? Should I add code to restrict use of PDT to -O3 or do that in a later diff?
Aug 22 2016
Aug 19 2016
Add a missing block which logically fits with this diff (since not yet accepted)
Aug 16 2016
Aug 9 2016
All comments have been addressed
Remove BlockInfoVec and move data structure into BlockInfo map.
Aug 5 2016
address review comments
Thanks, would one of you please accept?
Aug 3 2016
Save David's suggestions. Add parameter name
Doxygen style comments with periods. Fix spelling of Aggressive
Aug 2 2016
I have a process question.
Will we commit the incremental diffs? in which case would one of you "accept" this on.
Or do I continue to update this diff with more changes until we are code complete?
Comments for state variables
Undo a clang-format include reordering
Jul 27 2016
Wei would you commit, I don't have permissions
Added test case
Jun 30 2016
I am sympathetic of course to the view of incremental changes but I don't really think it is effective in this case because so much functionality has to come online in one go. There is a kernel this is common (propagating liveness as a sparse backwards flow problem, lines 488-497) but that is quite small. The next logical step is to defer deleting branches until you know they control something live. This needs to be done in batches to use IDFCalculator efficiently and adds an outer loop. However, once you start having *any* dead control flow you need to deal with the complexities of phi nodes and the attendant problems with changing the control flow graph. There is not really any useful intermediate step,
Following Chandler's feedback, modified to simply replace the existing
ADCE rather than having two implementations. Reused baseline names.
Jun 9 2016
Replace the baseline ADCE with this implementation modified to
not build the post-dominator tree and in that case retain all
control flow. This preserves prior behavior for -O1 and -O2 and avoids
the extra cost needed to remove control flow.
Jun 8 2016
From Chandler by email:
Jun 6 2016
- Merge branch 'master' into acdce-with-idf-for-review
Thanks for the review
Apr 30 2016
Bug fix in handling of "hard" phi nodes
Apr 27 2016
Update two recently added test and fix a bug incorporating changes to
Apr 26 2016
and the formatting one in ACDCE.h
Fix formatting errors
Cleanp in response to review comments
Apr 25 2016
Update to recent ADCE changes
Apr 19 2016
Update to new IDFCalculator