[PATCH] D23738: [PM] Extend the explicit 'invalidate' method API on analysis results to accept an Invalidator that allows them to invalidate themselves if their dependencies are in turn invalidated.

Chandler Carruth via llvm-commits llvm-commits at lists.llvm.org
Sun Aug 21 23:39:23 PDT 2016


chandlerc added a comment.

In https://reviews.llvm.org/D23738#521875, @silvas wrote:

> This is a big improvement on the current state of things and can probably get rid of most if not all of the insufficient invalidation issues I was running into without a big refactor to pass stuff into the query path of a ton of analyses.
>
> This is somewhat limited because it only works within a single IRUnit. So it won't cover cases like:
>
> - AAManager (function analysis) can be holding a pointer to GlobalsAA (module analysis)


Yea, I'm working on a follow-up patch that should address this. It's less pretty, but the fact that it is so much less common makes me hesitant to engineer a more heavyweight solution.

> - LoopAccessAnalysis (loop analysis) holds pointers to various function analysis


I'm specifically trying to end up with a solution that will work equally well here and for function analyses using module analyses.

I'll be looking at the loop stuff next though to help validate this or uncover any further issues.

> - Loop analyses implicitly hold pointers to Loop objects owned by LoopAnalysis. (analogously for CGSCC analyses and LazyCallGraph)


Both of these I think will be handled by the proxies, but it is certainly something that needs to be dealt with.


https://reviews.llvm.org/D23738





More information about the llvm-commits mailing list