diff options
author | George Karpenkov <ekarpenkov@apple.com> | 2018-10-11 22:59:59 +0000 |
---|---|---|
committer | George Karpenkov <ekarpenkov@apple.com> | 2018-10-11 22:59:59 +0000 |
commit | d1dd5c3a88724a25d9fef3962600ce5b223440ca (patch) | |
tree | 2982d8ffc2b93972afdf4d131f07117e555a4da8 /clang/lib/StaticAnalyzer/Core/CoreEngine.cpp | |
parent | ca7a23e761bbdde867ada667c4d59f563ef07865 (diff) | |
download | bcm5719-llvm-d1dd5c3a88724a25d9fef3962600ce5b223440ca.tar.gz bcm5719-llvm-d1dd5c3a88724a25d9fef3962600ce5b223440ca.zip |
[analyzer] Experiment with an iteration order only based on location, and not using the stack frame
Differential Revision: https://reviews.llvm.org/D53058
llvm-svn: 344313
Diffstat (limited to 'clang/lib/StaticAnalyzer/Core/CoreEngine.cpp')
-rw-r--r-- | clang/lib/StaticAnalyzer/Core/CoreEngine.cpp | 7 |
1 files changed, 5 insertions, 2 deletions
diff --git a/clang/lib/StaticAnalyzer/Core/CoreEngine.cpp b/clang/lib/StaticAnalyzer/Core/CoreEngine.cpp index e5a5296e027..e76314972f3 100644 --- a/clang/lib/StaticAnalyzer/Core/CoreEngine.cpp +++ b/clang/lib/StaticAnalyzer/Core/CoreEngine.cpp @@ -53,7 +53,8 @@ STATISTIC(NumPathsExplored, // Core analysis engine. //===----------------------------------------------------------------------===// -static std::unique_ptr<WorkList> generateWorkList(AnalyzerOptions &Opts) { +static std::unique_ptr<WorkList> generateWorkList(AnalyzerOptions &Opts, + SubEngine &subengine) { switch (Opts.getExplorationStrategy()) { case AnalyzerOptions::ExplorationStrategyKind::DFS: return WorkList::makeDFS(); @@ -65,6 +66,8 @@ static std::unique_ptr<WorkList> generateWorkList(AnalyzerOptions &Opts) { return WorkList::makeUnexploredFirst(); case AnalyzerOptions::ExplorationStrategyKind::UnexploredFirstQueue: return WorkList::makeUnexploredFirstPriorityQueue(); + case AnalyzerOptions::ExplorationStrategyKind::UnexploredFirstLocationQueue: + return WorkList::makeUnexploredFirstPriorityLocationQueue(); default: llvm_unreachable("Unexpected case"); } @@ -72,7 +75,7 @@ static std::unique_ptr<WorkList> generateWorkList(AnalyzerOptions &Opts) { CoreEngine::CoreEngine(SubEngine &subengine, FunctionSummariesTy *FS, AnalyzerOptions &Opts) - : SubEng(subengine), WList(generateWorkList(Opts)), + : SubEng(subengine), WList(generateWorkList(Opts, subengine)), BCounterFactory(G.getAllocator()), FunctionSummaries(FS) {} /// ExecuteWorkList - Run the worklist algorithm for a maximum number of steps. |