This is an archive of the discontinued LLVM Phabricator instance.

Improve caching scheme in ProvenanceAnalysis.
ClosedPublic

Authored by mzolotukhin on Mar 8 2018, 12:31 PM.

Details

Summary

ProvenanceAnalysis::related(A, B) currently memoizes its results, and on big
tests the cache grows too large, and we're spending most of the time
growing/looking through DenseMap.

This patch reduces the size of the cache by normalizing keys first: we do that
by calling GetUnderlyingObjCPtr on the input values. The results of
GetUnderlyingObjCPtr are also memoized in a separate cache.

The patch doesn't bring noticable changes to compile time on CTMark, however
significantly helps one of our internal tests.

Diff Detail

Event Timeline

mzolotukhin created this revision.Mar 8 2018, 12:31 PM
pete accepted this revision.Mar 9 2018, 4:02 PM
pete added a subscriber: pete.

This all looks reasonable. Its a nice localized change to this pass. LGTM.

This revision is now accepted and ready to land.Mar 9 2018, 4:02 PM
This revision was automatically updated to reflect the committed changes.