16 #ifndef LLVM_CLANG_ANALYSES_DATAFLOW_VALUES
17 #define LLVM_CLANG_ANALYSES_DATAFLOW_VALUES
21 #include "llvm/ADT/DenseMap.h"
39 template <
typename ValueTypes,
48 typedef typename ValueTypes::ValTy
ValTy;
88 typename EdgeDataMapTy::iterator I =
EdgeDataMap.find(E);
89 assert (I !=
EdgeDataMap.end() &&
"No data associated with Edge.");
102 typename BlockDataMapTy::iterator I =
BlockDataMap.find(B);
103 assert (I !=
BlockDataMap.end() &&
"No data associated with block.");
118 assert (
StmtDataMap &&
"Dataflow values were not computed for statements.");
119 typename StmtDataMapTy::iterator I =
StmtDataMap->find(S);
120 assert (I !=
StmtDataMap->end() &&
"No data associated with statement.");
ValTy & getEdgeData(const BlockEdge &E)
EdgeDataMapTy EdgeDataMap
AnalysisDataTy & getAnalysisData()
EdgeDataMapTy & getEdgeDataMap()
llvm::DenseMap< ProgramPoint, ValTy > EdgeDataMapTy
ValueTypes::AnalysisDataTy AnalysisDataTy
const ValTy & getStmtData(const Stmt *S) const
ValTy & getStmtData(const Stmt *S)
llvm::DenseMap< const CFGBlock *, ValTy > BlockDataMapTy
const EdgeDataMapTy & getEdgeDataMap() const
const ValTy & getBlockData(const CFGBlock *B) const
DataflowValues. Container class to store dataflow values for a CFG.
void InitializeValues(const CFG &cfg)
const BlockDataMapTy & getBlockDataMap() const
AnalysisDataTy AnalysisData
const ValTy & getEdgeData(const BlockEdge &E) const
StmtDataMapTy * StmtDataMap
llvm::DenseMap< const Stmt *, ValTy > StmtDataMapTy
const AnalysisDataTy & getAnalysisData() const
bool isBackwardAnalysis()
StmtDataMapTy & getStmtDataMap()
const StmtDataMapTy & getStmtDataMap() const
_AnalysisDirTag AnalysisDirTag
BlockDataMapTy & getBlockDataMap()
BlockDataMapTy BlockDataMap
ValTy & getBlockData(const CFGBlock *B)