NoQ accepted this revision.
NoQ added a reviewer: NoQ.
NoQ added a comment.

In https://reviews.llvm.org/D28330#637075, @zaks.anna wrote:

> I did not think of solution #1! It's definitely better than the pattern 
> matching I've added here. However, this checker fires so infrequently, that I 
> do not think it's worth investing more time into perfecting it.


Well, the thing i like about your solution is that it resists arbitrary state 
splits. Eg., if the reason for the state split is some body farm function or a 
checker state split, which doesn't constitute a programmer's intent to check 
for error, then there's no reason to clean state. However, we won't be able to 
find this out by looking at range constraints retrospectively - we'd only know 
it during `evalAssume`/`checkBranchCondition`. However, currently we're doing a 
great job in other places around the analyzer to avoid unnecessary state 
splits, so range constraints are pretty reliable.

In fact, a check in an inlined function should also not be considered a valid 
reason for state cleanup. Or probably even for a state split. But that's 
another story. Anyway, i approve your approach here :)


https://reviews.llvm.org/D28330



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

Reply via email to