This is an archive of the discontinued LLVM Phabricator instance.

[analyzer] Fix diagnostics in callees of interesting callees.
ClosedPublic

Authored by NoQ on Mar 30 2018, 5:55 PM.

Details

Summary

removeUnneededCalls() is responsible for removing path diagnostic pieces within functions that don't contain "interesting" events. It is the functionality that's controlled by the `-analyzer-config prune-paths and it makes bug reports much tidier (though sometimes it removes too much, and in this case it's great to disable this option when debugging).

While relatively simple, it contains a bug: when a stack frame is known to be interesting, the function doesn't descend into it to prune anything within it, even other callees that are totally boring.

This is rarely apparent, but in C++ there are a lot of implicit calls that suddenly become visible because of this bug.

Diff Detail

Event Timeline

NoQ created this revision.Mar 30 2018, 5:55 PM
This revision was not accepted when it landed; it landed in state Needs Review.Apr 3 2018, 11:56 AM
This revision was automatically updated to reflect the committed changes.
NoQ added a comment.Apr 19 2018, 4:08 PM

rC330375 has nothing to do with this review; i misplaced the link in the commit message again.