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.


Repository:
  rL LLVM

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D57230/new/

https://reviews.llvm.org/D57230



_______________________________________________
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to