[PATCH] D57230: [analyzer] Toning down invalidation a bit
Gábor Horváth via Phabricator via llvm-commits
llvm-commits at lists.llvm.org
Mon Feb 11 09:20:04 PST 2019
xazax.hun added a comment.
I think I might have a theory, but I would like to discuss it as I am not familiar with the internals bindings.
My theory is the following: when we store the bindings, we store them in a map where the key is a base region.
So when we try to look the bindings up with a non-base region, we will not get any bindings.
So in our current case, we end up having a non-base region in the worklist of `InvalidateRegionsWorker`.
`ClusterAnalysis::RunWorkList` will look up the cluster for the non-base region.
Without a cluster found we will not visit the bindings. With not visiting the bindings, we will not invalidate the symbols.
With no symbols to invalidate, the checkers will not get notified.
I think the whole `ClusterAnalysis` is flawed at this point. Most of the code expects to only see base regions, but some code paths might end up adding non-base regions.
So the question is, what should be the proper way to handle the `TK_DoNotInvalidateSuperRegion` trait?
Maybe we should always look up the bindings using the base region. But if we do, should we actually visit all of the bindings?
I did not have time yet to play with the possible solutions and will come back to this problem soon, just wanted to write down what I got so far.
CHANGES SINCE LAST ACTION
More information about the llvm-commits