zaks.anna accepted this revision.
zaks.anna added a comment.
This revision is now accepted and ready to land.

LGTM!

One thing to be aware here is that a const pointer could be deleted, so we 
should be able to delete a parent object without a warning. (I think that 
should work with this patch since you don't change the trait, but you might 
want to add a test.)

> What i don't like about the approach this patch implements, is that it makes 
> the core rely on an 

>  implementation detail of RegionStoreManager ("only base regions are 
> relevant" is such implementation 

>  detail). Instead, i also tried to add a few extra virtual methods into the 
> StoreManager to avoid this 

>  problem, but it made the patch much heavier. I can post that, unless anybody 
> else thinks that it's a 

>  natural thing (rather than implementation detail) to propagate this trait to 
> base regions.


I'd commit this patch. If you want, feel free to follow up with another to 
remove the leaking of the implementation detail. I do not fully understand what 
the alternate solution is... I do not think it would make sense to 
automatically apply the TK_PreserveContents trait to the base region when one 
calls ETraits.setTrait(); not sure if you are suggesting that.


================
Comment at: lib/StaticAnalyzer/Core/CallEvent.cpp:182
@@ -181,3 +181,3 @@
                         
RegionAndSymbolInvalidationTraits::TK_PreserveContents);
         // TODO: Factor this out + handle the lower level const pointers.
 
----------------
Not sure, but this could mean to deal with cases where you pass a non const 
pointer to a class that has const fields..


http://reviews.llvm.org/D19057



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

Reply via email to