[cfe-dev] Iterator Checkers: Understanding Bindings

Artem Dergachev via cfe-dev cfe-dev at lists.llvm.org
Fri May 13 11:28:25 PDT 2016


I agree with pretty much all of your points.

I think a proper solution would also include cases when the object was 
not conjured by a function. Eg., how do we identify `c' in the following 
code?:

   class C {...};
   void foo() {
     C c;
   }

In this case `c' doesn't have a default-bound symbol. The region 
approach works though; but it has other problems.

I wish we had a way to assign identifier-like symbols to object 
instances (perhaps in an on-demand manner), and probably construct 
symbolic-ID expressions for identifiers of objects produced from other 
objects (eg. SymbolID, SymbolCopiedID<SymbolID>, etc.).

I'm still not instantly sure how to implement that, despite thinking 
about it quite a bit. I'd also ask more clever guys to share ideas (:

P.S. Imho, evalCall problem is actually about sharing checker state. 
There's no problem with having evalCall() staying in only one checker if 
we share its results with other checkers.



More information about the cfe-dev mailing list