NoQ added a comment.

> We could work around that by invalidating object contents every time we 
> detect something fishy. The only reasonable detection i can come up with 
> would be to detect if we have a coinciding binding (i.e. what the assertion 
> was previously protecting us from), eg.:
> 
>   if (B.getDefaultBinding(R) || B.getDirectBinding(R))
>     V = UnknownVal();
> 
> 
> This detection is imperfect - there are tests that would still fail. In 
> particular it won't fix the `ASTRecordLayout` problem. And i also suspect 
> that it really destroys a lot more good data than bad data. So i'll be 
> experimenting with that now. In the current version of the patch i remove the 
> special case handling and simply bind the default value blindly even if i 
> know that `RegionStore` can't handle it precisely.

Committed as is for now. Didn't notice any difference between the three 
approaches on my C++ testing grounds.


Repository:
  rL LLVM

https://reviews.llvm.org/D46368



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

Reply via email to