Page MenuHomePhabricator

[WIP][DSE] Enable MSSA DSE to optimize across PHIs
Needs ReviewPublic

Authored by ebrevnov on Oct 24 2020, 5:12 AM.
This revision needs review, but there are no reviewers specified.

Details

Reviewers
None
Summary

This is somewhat working version able to handle cross block DSE across PHI merges. This is not a final patch in any means. It should be possible to extract several NFCs, split to smaller pieces, tests, etc. If someone wants to take over and continue it would be great. If not I will do my best to push changes as schedule permits. Anyway any feedback is welcome.

Diff Detail

Event Timeline

ebrevnov created this revision.Oct 24 2020, 5:12 AM
Herald added a project: Restricted Project. · View Herald TranscriptOct 24 2020, 5:12 AM
ebrevnov requested review of this revision.Oct 24 2020, 5:12 AM
ebrevnov added a subscriber: fhahn.Oct 24 2020, 5:14 AM
ebrevnov updated this revision to Diff 300594.Oct 26 2020, 1:21 AM

Rename DefLoc to ResDefLoc to fix name conflict.

Great, thanks for sharing!

This currently seems to lead to a bit less stores removed overall on MultiSource/SPEC2000/SPEC2006 with -O3 -flto, but that might be related to some of the limits needing adjustments.

As a first step, it would probably be good to add a set of tests for the new functionality.

Thanks for giving it a try!

Did you use latest update? If not would be nice to remeasure.
Unfortunately, I don't have access to mentioned Spec and not aware of Multisource benchmarks to look on my side. Is it feasible for you to share IR's for several cases so I could take a look? Would be nice to have them in regression test suite anyway.
On the other side I can try to run similar experiment on our internal tests.

This currently seems to lead to a bit less stores removed overall on MultiSource/SPEC2000/SPEC2006 with -O3 -flto, but that might be related to some of the limits needing adjustments.

I found PartialLimit preventing DSE to optimize one of my simple cases. Here is the fix https://reviews.llvm.org/D90371 which I believe is beneficial regardless.

I also noted in case of earlier access is overwritten by the later one from the beginning and the end we DSE only beginning. Did you meet such behavior? Any plans fixing that?

Thanks
Evgeniy