33 using namespace SVFUtil;
38 MemSSA* mssa = svfg->getMSSA();
47 rmDerefDirSVFGEdges(pta);
49 rmIncomingEdgeForSUStore(pta);
73 for(
SVFG::iterator it = svfg->begin(), eit = svfg->end(); it!=eit; ++it)
77 if(
const StoreSVFGNode* stmtNode = SVFUtil::dyn_cast<StoreSVFGNode>(node))
79 if(SVFUtil::isa<StoreStmt>(stmtNode->getPAGEdge()))
82 if(isStrongUpdate(node, singleton, pta))
87 if ((*it2)->isIndirectVFGEdge())
89 toRemove.insert(*it2);
94 svfg->removeSVFGEdge(edge);
#define DBOUT(TYPE, X)
LLVM debug macros, define type of your DBUG model of each pass.
virtual void rmIncomingEdgeForSUStore(BVDataPTAImpl *pta)
virtual void buildSVFG()
Re-write create SVFG method.
IDToNodeMapTy::iterator iterator
Node Iterators.
BVDataPTAImpl * getPTA() const
Return PTA.
bool printStat()
Whether print statistics.
PTACallGraph * getCallGraph() const
Return call graph.
VFGEdge::VFGEdgeSetTy::const_iterator const_iterator
std::string pasMsg(const std::string &msg)
Print each pass/phase message by converting a string into blue string output.
std::ostream & outs()
Overwrite llvm::outs()
std::unordered_set< Key, Hash, KeyEqual, Allocator > Set