This is an archive of the discontinued LLVM Phabricator instance.

[Analyzer] Iterator Checkers: Replace `UnknownVal` in comparison result by a conjured value
ClosedPublic

Authored by baloghadamsoftware on Nov 14 2019, 8:17 AM.

Details

Summary

Sometimes the return value of a comparison operator call is UnkownVal. Since no assumptions can be made on UnknownVal, this leeds to keeping impossible execution paths in the exploded graph resulting in poor performance and false positives. To overcome this we replace unknown results of iterator comparisons by conjured symbols.

Diff Detail

Event Timeline

@NoQ, @Szelethus What about this patch? It is an essential bugfix.

NoQ accepted this revision.Dec 10 2019, 4:03 PM

That's a fair point, these days we always have to account for unknown values.

I'm still curious (for science!) about how exactly it came to be in the tests.

This revision is now accepted and ready to land.Dec 10 2019, 4:03 PM
This revision was automatically updated to reflect the committed changes.