]> granicus.if.org Git - clang/commit
[analyzer] Exploration strategy prioritizing unexplored nodes first
authorGeorge Karpenkov <ekarpenkov@apple.com>
Mon, 26 Feb 2018 22:14:18 +0000 (22:14 +0000)
committerGeorge Karpenkov <ekarpenkov@apple.com>
Mon, 26 Feb 2018 22:14:18 +0000 (22:14 +0000)
commit56019e54711efb70c8617b2e72b8081ea017de5c
tree9f9c955526fb65e8763523aacb12b2d553f6db96
parentac61b333fdb5a81d36387934e7e33cf9fecb3dea
[analyzer] Exploration strategy prioritizing unexplored nodes first

See D42775 for discussion.  Turns out, just exploring nodes which
weren't explored first is not quite enough, as e.g. the first quick
traversal resulting in a report can mark everything as "visited", and
then subsequent traversals of the same region will get all the pitfalls
of DFS.
Priority queue-based approach in comparison shows much greater
increase in coverage and even performance, without sacrificing memory.

Differential Revision: https://reviews.llvm.org/D43354

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@326136 91177308-0d34-0410-b5e6-96231b3b80d8
include/clang/StaticAnalyzer/Core/AnalyzerOptions.h
include/clang/StaticAnalyzer/Core/PathSensitive/WorkList.h
lib/StaticAnalyzer/Core/AnalyzerOptions.cpp
lib/StaticAnalyzer/Core/CoreEngine.cpp
test/Analysis/exploration_order/prefer_unexplored.cc