#include "clang/StaticAnalyzer/Core/PathSensitive/ExplodedGraph.h"
|
| ExplodedGraph () |
|
| ~ExplodedGraph () |
|
ExplodedNode * | getNode (const ProgramPoint &L, ProgramStateRef State, bool IsSink=false, bool *IsNew=nullptr) |
| Retrieve the node associated with a (Location,State) pair, where the 'Location' is a ProgramPoint in the CFG. More...
|
|
ExplodedNode * | createUncachedNode (const ProgramPoint &L, ProgramStateRef State, bool IsSink=false) |
| Create a node for a (Location, State) pair, but don't store it for deduplication later. More...
|
|
std::unique_ptr< ExplodedGraph > | MakeEmptyGraph () const |
|
ExplodedNode * | addRoot (ExplodedNode *V) |
| addRoot - Add an untyped node to the set of roots. More...
|
|
ExplodedNode * | addEndOfPath (ExplodedNode *V) |
| addEndOfPath - Add an untyped node to the set of EOP nodes. More...
|
|
unsigned | num_roots () const |
|
unsigned | num_eops () const |
|
bool | empty () const |
|
unsigned | size () const |
|
void | reserve (unsigned NodeCount) |
|
node_iterator | nodes_begin () |
|
node_iterator | nodes_end () |
|
const_node_iterator | nodes_begin () const |
|
const_node_iterator | nodes_end () const |
|
roots_iterator | roots_begin () |
|
roots_iterator | roots_end () |
|
const_roots_iterator | roots_begin () const |
|
const_roots_iterator | roots_end () const |
|
eop_iterator | eop_begin () |
|
eop_iterator | eop_end () |
|
const_eop_iterator | eop_begin () const |
|
const_eop_iterator | eop_end () const |
|
llvm::BumpPtrAllocator & | getAllocator () |
|
BumpVectorContext & | getNodeAllocator () |
|
std::unique_ptr< ExplodedGraph > | trim (ArrayRef< const NodeTy *> Nodes, InterExplodedGraphMap *ForwardMap=nullptr, InterExplodedGraphMap *InverseMap=nullptr) const |
| Creates a trimmed version of the graph that only contains paths leading to the given nodes. More...
|
|
void | enableNodeReclamation (unsigned Interval) |
| Enable tracking of recently allocated nodes for potential reclamation when calling reclaimRecentlyAllocatedNodes(). More...
|
|
void | reclaimRecentlyAllocatedNodes () |
| Reclaim "uninteresting" nodes created since the last time this method was called. More...
|
|
Definition at line 263 of file ExplodedGraph.h.
◆ AllNodesTy
◆ const_eop_iterator
◆ const_node_iterator
◆ const_roots_iterator
◆ eop_iterator
◆ node_iterator
◆ NodeMap
◆ NodeTy
◆ NodeVector
◆ roots_iterator
◆ ExplodedGraph()
ExplodedGraph::ExplodedGraph |
( |
| ) |
|
|
default |
◆ ~ExplodedGraph()
ExplodedGraph::~ExplodedGraph |
( |
| ) |
|
|
default |
◆ addEndOfPath()
addEndOfPath - Add an untyped node to the set of EOP nodes.
Definition at line 335 of file ExplodedGraph.h.
◆ addRoot()
◆ createUncachedNode()
Create a node for a (Location, State) pair, but don't store it for deduplication later.
This is useful when copying an already completed ExplodedGraph for further processing.
Definition at line 344 of file ExplodedGraph.cpp.
◆ empty()
bool clang::ento::ExplodedGraph::empty |
( |
| ) |
const |
|
inline |
◆ enableNodeReclamation()
void clang::ento::ExplodedGraph::enableNodeReclamation |
( |
unsigned |
Interval | ) |
|
|
inline |
◆ eop_begin() [1/2]
◆ eop_begin() [2/2]
◆ eop_end() [1/2]
◆ eop_end() [2/2]
◆ getAllocator()
llvm::BumpPtrAllocator& clang::ento::ExplodedGraph::getAllocator |
( |
| ) |
|
|
inline |
◆ getNode()
◆ getNodeAllocator()
◆ isInterestingLValueExpr()
bool ExplodedGraph::isInterestingLValueExpr |
( |
const Expr * |
Ex | ) |
|
|
static |
Returns true if nodes for the given expression kind are always kept around.
Definition at line 67 of file ExplodedGraph.cpp.
References clang::ProgramPoint::castAs(), clang::ProgramPoint::getAs(), clang::ento::ExplodedNode::getLocation(), clang::ento::ExplodedNode::getLocationContext(), clang::ProgramPoint::getLocationContext(), clang::LocationContext::getParentMap(), clang::ento::ExplodedNode::getState(), clang::ProgramPoint::getTag(), clang::ento::CallEvent::isCallStmt(), clang::ParentMap::isConsumedExpr(), clang::Expr::isLValue(), Nodes, clang::ento::ExplodedNode::pred_begin(), clang::ento::ExplodedNode::pred_size(), clang::CodeGen::state, clang::ento::ExplodedNode::succ_begin(), and clang::ento::ExplodedNode::succ_size().
◆ MakeEmptyGraph()
std::unique_ptr<ExplodedGraph> clang::ento::ExplodedGraph::MakeEmptyGraph |
( |
| ) |
const |
|
inline |
◆ nodes_begin() [1/2]
◆ nodes_begin() [2/2]
◆ nodes_end() [1/2]
◆ nodes_end() [2/2]
◆ num_eops()
unsigned clang::ento::ExplodedGraph::num_eops |
( |
| ) |
const |
|
inline |
◆ num_roots()
unsigned clang::ento::ExplodedGraph::num_roots |
( |
| ) |
const |
|
inline |
◆ reclaimRecentlyAllocatedNodes()
void ExplodedGraph::reclaimRecentlyAllocatedNodes |
( |
| ) |
|
◆ reserve()
void clang::ento::ExplodedGraph::reserve |
( |
unsigned |
NodeCount | ) |
|
|
inline |
◆ roots_begin() [1/2]
◆ roots_begin() [2/2]
◆ roots_end() [1/2]
◆ roots_end() [2/2]
◆ size()
unsigned clang::ento::ExplodedGraph::size |
( |
| ) |
const |
|
inline |
◆ trim()
Creates a trimmed version of the graph that only contains paths leading to the given nodes.
- Parameters
-
| Nodes | The nodes which must appear in the final graph. Presumably these are end-of-path nodes (i.e. they have no successors). |
[out] | ForwardMap | A optional map from nodes in this graph to nodes in the returned graph. |
[out] | InverseMap | An optional map from nodes in the returned graph to nodes in this graph. |
- Returns
- The trimmed graph
Definition at line 353 of file ExplodedGraph.cpp.
References clang::ento::ExplodedNode::getLocation(), clang::ento::ExplodedNode::isSink(), and Nodes.
◆ CoreEngine
◆ BVC
BVC - Allocator and context for allocating nodes and their predecessor and successor groups.
Definition at line 285 of file ExplodedGraph.h.
◆ ChangedNodes
NodeVector clang::ento::ExplodedGraph::ChangedNodes |
|
protected |
A list of recently allocated nodes that can potentially be recycled.
Definition at line 291 of file ExplodedGraph.h.
◆ EndNodes
The nodes in the simulation graph which have been specially marked as the endpoint of an abstract simulation path.
Definition at line 278 of file ExplodedGraph.h.
◆ FreeNodes
◆ Nodes
llvm::FoldingSet<ExplodedNode> clang::ento::ExplodedGraph::Nodes |
|
protected |
◆ NumNodes
unsigned clang::ento::ExplodedGraph::NumNodes = 0 |
|
protected |
NumNodes - The number of nodes in the graph.
Definition at line 288 of file ExplodedGraph.h.
◆ ReclaimCounter
unsigned clang::ento::ExplodedGraph::ReclaimCounter |
|
protected |
Counter to determine when to reclaim nodes.
Definition at line 302 of file ExplodedGraph.h.
◆ ReclaimNodeInterval
unsigned clang::ento::ExplodedGraph::ReclaimNodeInterval = 0 |
|
protected |
Determines how often nodes are reclaimed.
If this is 0, nodes will never be reclaimed.
Definition at line 299 of file ExplodedGraph.h.
◆ Roots
The roots of the simulation graph.
Usually there will be only one, but clients are free to establish multiple subgraphs within a single SimulGraph. Moreover, these subgraphs can often merge when paths from different roots reach the same state at the same program location.
Definition at line 274 of file ExplodedGraph.h.
The documentation for this class was generated from the following files: