diff options
author | George Karpenkov <ekarpenkov@apple.com> | 2018-02-26 22:14:18 +0000 |
---|---|---|
committer | George Karpenkov <ekarpenkov@apple.com> | 2018-02-26 22:14:18 +0000 |
commit | 56019e54711efb70c8617b2e72b8081ea017de5c (patch) | |
tree | 9f9c955526fb65e8763523aacb12b2d553f6db96 /include/clang/StaticAnalyzer/Core/PathSensitive/WorkList.h | |
parent | ac61b333fdb5a81d36387934e7e33cf9fecb3dea (diff) |
[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
Diffstat (limited to 'include/clang/StaticAnalyzer/Core/PathSensitive/WorkList.h')
-rw-r--r-- | include/clang/StaticAnalyzer/Core/PathSensitive/WorkList.h | 1 |
1 files changed, 1 insertions, 0 deletions
diff --git a/include/clang/StaticAnalyzer/Core/PathSensitive/WorkList.h b/include/clang/StaticAnalyzer/Core/PathSensitive/WorkList.h index cc2b6af02e..3169791464 100644 --- a/include/clang/StaticAnalyzer/Core/PathSensitive/WorkList.h +++ b/include/clang/StaticAnalyzer/Core/PathSensitive/WorkList.h @@ -84,6 +84,7 @@ public: static std::unique_ptr<WorkList> makeBFS(); static std::unique_ptr<WorkList> makeBFSBlockDFSContents(); static std::unique_ptr<WorkList> makeUnexploredFirst(); + static std::unique_ptr<WorkList> makeUnexploredFirstPriorityQueue(); }; } // end GR namespace |