aboutsummaryrefslogtreecommitdiff
path: root/lib/Analysis/BugReporter.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'lib/Analysis/BugReporter.cpp')
-rw-r--r--lib/Analysis/BugReporter.cpp16
1 files changed, 9 insertions, 7 deletions
diff --git a/lib/Analysis/BugReporter.cpp b/lib/Analysis/BugReporter.cpp
index 8719be7fdd..ffa1593fd5 100644
--- a/lib/Analysis/BugReporter.cpp
+++ b/lib/Analysis/BugReporter.cpp
@@ -24,6 +24,7 @@
#include "llvm/Support/raw_ostream.h"
#include "llvm/ADT/DenseMap.h"
#include "llvm/ADT/STLExtras.h"
+#include <queue>
using namespace clang;
@@ -298,18 +299,19 @@ MakeReportGraph(const ExplodedGraph<GRState>* G,
new ExplodedGraph<GRState>(GTrim->getCFG(), GTrim->getCodeDecl(),
GTrim->getContext());
- // Sometimes the trimmed graph can contain a cycle. Perform a reverse DFS
+ // Sometimes the trimmed graph can contain a cycle. Perform a reverse BFS
// to the root node, and then construct a new graph that contains only
// a single path.
llvm::DenseMap<const void*,unsigned> Visited;
- llvm::SmallVector<const ExplodedNode<GRState>*, 10> WS;
- WS.push_back(N);
+ std::queue<const ExplodedNode<GRState>*> WS;
+ WS.push(N);
+
unsigned cnt = 0;
const ExplodedNode<GRState>* Root = 0;
while (!WS.empty()) {
- const ExplodedNode<GRState>* Node = WS.back();
- WS.pop_back();
+ const ExplodedNode<GRState>* Node = WS.front();
+ WS.pop();
if (Visited.find(Node) != Visited.end())
continue;
@@ -323,12 +325,12 @@ MakeReportGraph(const ExplodedGraph<GRState>* G,
for (ExplodedNode<GRState>::const_pred_iterator I=Node->pred_begin(),
E=Node->pred_end(); I!=E; ++I)
- WS.push_back(*I);
+ WS.push(*I);
}
assert (Root);
- // Now walk from the root down the DFS path, always taking the successor
+ // Now walk from the root down the BFS path, always taking the successor
// with the lowest number.
ExplodedNode<GRState> *Last = 0, *First = 0;
NodeBackMap *BM = new NodeBackMap();