#include "clang/StaticAnalyzer/Core/PathSensitive/WorkList.h"
#include "llvm/ADT/PriorityQueue.h"
#include "llvm/ADT/DenseSet.h"
#include "llvm/ADT/DenseMap.h"
#include "llvm/ADT/STLExtras.h"
#include "llvm/ADT/Statistic.h"
#include <deque>
#include <vector>
usingnamespaceclang;
usingnamespaceento;
#define DEBUG_TYPE …
STATISTIC(MaxQueueSize, "Maximum size of the worklist");
STATISTIC(MaxReachableSize, "Maximum size of auxiliary worklist set");
namespace {
class DFS : public WorkList { … };
class BFS : public WorkList { … };
}
WorkList::~WorkList() = default;
std::unique_ptr<WorkList> WorkList::makeDFS() { … }
std::unique_ptr<WorkList> WorkList::makeBFS() { … }
namespace {
class BFSBlockDFSContents : public WorkList { … };
}
std::unique_ptr<WorkList> WorkList::makeBFSBlockDFSContents() { … }
namespace {
class UnexploredFirstStack : public WorkList { … };
}
std::unique_ptr<WorkList> WorkList::makeUnexploredFirst() { … }
namespace {
class UnexploredFirstPriorityQueue : public WorkList { … };
}
std::unique_ptr<WorkList> WorkList::makeUnexploredFirstPriorityQueue() { … }
namespace {
class UnexploredFirstPriorityLocationQueue : public WorkList { … };
}
std::unique_ptr<WorkList> WorkList::makeUnexploredFirstPriorityLocationQueue() { … }