This is an archive of the discontinued LLVM Phabricator instance.

[Attributor] Regularly clear dependences to remove spurious ones
ClosedPublic

Authored by jdoerfert on Jun 13 2019, 10:01 PM.

Details

Summary

As dependences between abstract attributes can become stale, e.g., if
one was sufficient to imply another one at some point but it has since
been wakened to the point it is not usable for the formerly implied one.
To weed out spurious dependences, and thereby eliminate unneeded
updates, we introduce an option to determine how often the dependence
cache is cleared and recomputed during the fixpoint iteration.

Note that the initial value is set to 0 which disables recomputation.

Diff Detail

Repository
rL LLVM

Event Timeline

jdoerfert created this revision.Jun 13 2019, 10:01 PM
Herald added a project: Restricted Project. · View Herald TranscriptJun 13 2019, 10:01 PM

Could you include a test with this patch?

Could you include a test with this patch?

I will construct one as soon as we deduce an actual attribute in the tree (it's impossible without one).
Once the wrappers (D63312) go in there will be more test opportunities to show the interplay, thus fewer dependences cause fewer wrappers.
The same holds for D63317.

sstefan1 accepted this revision.Aug 20 2019, 4:45 PM

LGTM. Except for lack of tests

This revision is now accepted and ready to land.Aug 20 2019, 4:45 PM
This revision was automatically updated to reflect the committed changes.