Lines Matching refs:ExplodedNode

9 //  This file defines the template classes ExplodedNode and ExplodedGraph,
56 bool ExplodedGraph::shouldCollect(const ExplodedNode *node) {
91 const ExplodedNode *pred = *(node->pred_begin());
95 const ExplodedNode *succ = *(node->succ_begin());
153 void ExplodedGraph::collectNode(ExplodedNode *node) {
159 ExplodedNode *pred = *(node->pred_begin());
160 ExplodedNode *succ = *(node->succ_begin());
166 node->~ExplodedNode();
188 // ExplodedNode.
192 // it can be either a pointer to a single ExplodedNode, or a pointer to a
201 using ExplodedNodeVector = BumpVector<ExplodedNode *>;
202 using GroupStorage = llvm::PointerUnion<ExplodedNode *, ExplodedNodeVector *>;
204 void ExplodedNode::addPredecessor(ExplodedNode *V, ExplodedGraph &G) {
210 void ExplodedNode::NodeGroup::replaceNode(ExplodedNode *node) {
214 assert(isa<ExplodedNode *>(Storage));
216 assert(isa<ExplodedNode *>(Storage));
219 void ExplodedNode::NodeGroup::addNode(ExplodedNode *N, ExplodedGraph &G) {
225 assert(isa<ExplodedNode *>(Storage));
233 auto *Old = cast<ExplodedNode *>(Storage);
247 unsigned ExplodedNode::NodeGroup::size() const {
259 ExplodedNode * const *ExplodedNode::NodeGroup::begin() const {
271 ExplodedNode * const *ExplodedNode::NodeGroup::end() const {
283 bool ExplodedNode::isTrivial() const {
289 const CFGBlock *ExplodedNode::getCFGBlock() const {
319 const Stmt *ExplodedNode::getStmtForDiagnostics() const {
350 const Stmt *ExplodedNode::getNextStmtForDiagnostics() const {
351 for (const ExplodedNode *N = getFirstSucc(); N; N = N->getFirstSucc()) {
379 const Stmt *ExplodedNode::getPreviousStmtForDiagnostics() const {
380 for (const ExplodedNode *N = getFirstPred(); N; N = N->getFirstPred())
387 const Stmt *ExplodedNode::getCurrentOrPreviousStmtForDiagnostics() const {
394 ExplodedNode *ExplodedGraph::getNode(const ProgramPoint &L,
432 ExplodedNode *ExplodedGraph::createUncachedNode(const ProgramPoint &L,
448 using Pass1Ty = llvm::DenseSet<const ExplodedNode *>;
455 SmallVector<const ExplodedNode*, 10> WL1, WL2;
464 const ExplodedNode *N = WL1.pop_back_val();
489 const ExplodedNode *N = WL2.pop_back_val();
497 ExplodedNode *NewN = G->createUncachedNode(N->getLocation(), N->State,
513 for (const ExplodedNode *Pred : N->Preds) {
518 NewN->addPredecessor(const_cast<ExplodedNode *>(PI->second), *G);
525 for (const ExplodedNode *Succ : N->Succs) {
528 const_cast<ExplodedNode *>(PI->second)->addPredecessor(NewN, *G);