This is an archive of the discontinued LLVM Phabricator instance.

[SCEV] Maintain loop use lists, and use them in forgetLoop
ClosedPublic

Authored by sanjoy on Sep 29 2017, 3:20 PM.

Details

Summary

Currently we do not correctly invalidate memoized results for add recurrences
that were created directly (i.e. they were not created from a Value). This
change fixes this by keeping loop use lists and using the loop use lists to
determine which SCEV expressions to invalidate.

Here are some statistics on the number of uses of in the use lists of all loops
on a clang bootstrap (config: release, no asserts):

     Count: 731310
       Min: 1
      Mean: 8.555150
50th %tile: 4
95th %tile: 25
99th %tile: 53
       Max: 433

Event Timeline

sanjoy created this revision.Sep 29 2017, 3:20 PM
This revision is now accepted and ready to land.Oct 8 2017, 9:26 PM
sanjoy edited the summary of this revision. (Show Details)Oct 10 2017, 11:52 AM
This revision was automatically updated to reflect the committed changes.