29 #ifndef INCLUDE_UTIL_ICFGSTAT_H_
30 #define INCLUDE_UTIL_ICFGSTAT_H_
107 ICFG::ICFGNodeIDToNodeMapTy::iterator it =
icfg->
begin();
108 ICFG::ICFGNodeIDToNodeMapTy::iterator eit =
icfg->
end();
109 for (; it != eit; ++it)
115 if (SVFUtil::isa<IntraICFGNode>(node))
117 else if (SVFUtil::isa<CallICFGNode>(node))
119 else if (SVFUtil::isa<RetICFGNode>(node))
121 else if (SVFUtil::isa<FunEntryICFGNode>(node))
123 else if (SVFUtil::isa<FunExitICFGNode>(node))
127 ICFGEdge::ICFGEdgeSetTy::iterator edgeIt =
128 it->second->OutEdgeBegin();
129 ICFGEdge::ICFGEdgeSetTy::iterator edgeEit =
130 it->second->OutEdgeEnd();
131 for (; edgeIt != edgeEit; ++edgeIt)
148 SVFUtil::outs() <<
"\n************ " << statname <<
" ***************\n";
150 unsigned field_width = 20;
154 SVFUtil::outs() << std::setw(field_width) << it->first << it->second <<
"\n";
iterator begin()
Iterators.
bool isCallCFGEdge() const
bool isIntraCFGEdge() const
bool isRetCFGEdge() const
void performStatforIFDS()
Set< const ICFGNode * > ICFGNodeSet
void printStat(std::string statname)
std::ostream & outs()
Overwrite llvm::outs()
std::unordered_set< Key, Hash, KeyEqual, Allocator > Set