15 #ifndef LLVM_CLANG_ANALYSES_DATAFLOW_VALUES 16 #define LLVM_CLANG_ANALYSES_DATAFLOW_VALUES 20 #include "llvm/ADT/DenseMap.h" 38 template <
typename ValueTypes,
47 typedef typename ValueTypes::ValTy
ValTy;
87 typename EdgeDataMapTy::iterator I = EdgeDataMap.find(E);
88 assert (I != EdgeDataMap.end() &&
"No data associated with Edge.");
101 typename BlockDataMapTy::iterator I = BlockDataMap.find(B);
102 assert (I != BlockDataMap.end() &&
"No data associated with block.");
117 assert (StmtDataMap &&
"Dataflow values were not computed for statements.");
118 typename StmtDataMapTy::iterator I = StmtDataMap->find(S);
119 assert (I != StmtDataMap->end() &&
"No data associated with statement.");
144 if (!StmtDataMap) StmtDataMap =
new StmtDataMapTy();
Stmt - This represents one statement.
ValTy & getEdgeData(const BlockEdge &E)
getEdgeData - Retrieves the dataflow values associated with a CFG edge.
EdgeDataMapTy EdgeDataMap
AnalysisDataTy & getAnalysisData()
getAnalysisData - Retrieves the meta data associated with a dataflow analysis for analyzing a particu...
EdgeDataMapTy & getEdgeDataMap()
getEdgeDataMap - Retrieves the internal map between CFG edges and dataflow values.
llvm::DenseMap< ProgramPoint, ValTy > EdgeDataMapTy
ValueTypes::AnalysisDataTy AnalysisDataTy
ValTy & getStmtData(const Stmt *S)
getStmtData - Retrieves the dataflow values associated with a specified Stmt.
llvm::DenseMap< const CFGBlock *, ValTy > BlockDataMapTy
const ValTy & getStmtData(const Stmt *S) const
DataflowValues. Container class to store dataflow values for a CFG.
void InitializeValues(const CFG &cfg)
InitializeValues - Invoked by the solver to initialize state needed for dataflow analysis.
AnalysisDataTy AnalysisData
Represents a single basic block in a source-level CFG.
const BlockDataMapTy & getBlockDataMap() const
Represents a source-level, intra-procedural CFG that represents the control-flow of a Stmt...
const ValTy & getEdgeData(const BlockEdge &E) const
StmtDataMapTy * StmtDataMap
const ValTy & getBlockData(const CFGBlock *B) const
llvm::DenseMap< const Stmt *, ValTy > StmtDataMapTy
const EdgeDataMapTy & getEdgeDataMap() const
bool isBackwardAnalysis()
isBackwardAnalysis - Returns true if the dataflow values are computed from a backward analysis...
StmtDataMapTy & getStmtDataMap()
getStmtDataMap - Retrieves the internal map between Stmts and dataflow values.
const StmtDataMapTy & getStmtDataMap() const
_AnalysisDirTag AnalysisDirTag
const AnalysisDataTy & getAnalysisData() const
Dataflow Directional Tag Classes.
BlockDataMapTy & getBlockDataMap()
getBlockDataMap - Retrieves the internal map between CFGBlocks and dataflow values.
BlockDataMapTy BlockDataMap
bool isForwardAnalysis()
isForwardAnalysis - Returns true if the dataflow values are computed from a forward analysis...
ValTy & getBlockData(const CFGBlock *B)
getBlockData - Retrieves the dataflow values associated with a specified CFGBlock.