34 using namespace SVFUtil;
48 while (!isWorklistEmpty())
50 NodeID nodeId = popFromWorklist();
54 for (
NodeID o : getPts(nodeId))
60 ecUnion(edge->getSrcID(), o);
65 ecUnion(o, edge->getDstID());
72 ecUnion(edge->getSrcID(), edge->getDstID());
77 ecUnion(edge->getSrcID(), edge->getDstID());
86 for (
NodeID sub : subNodes)
88 nodeToECMap[sub] = rep;
97 if (unionPts(ec, node))
108 nodeEit = consCG->end();
109 nodeIt != nodeEit; nodeIt++)
116 numOfProcessedAddr++;
118 const AddrCGEdge* addr = cast<AddrCGEdge>(*it);
121 if (addPts(dst, src))
122 pushIntoWorklist(dst);
const_iterator incomingAddrsBegin() const
const ConstraintEdge::ConstraintEdgeSetTy & getGepOutEdges() const
const ConstraintEdge::ConstraintEdgeSetTy & getLoadOutEdges() const
ConstraintEdge::ConstraintEdgeSetTy::const_iterator const_iterator
const ConstraintEdge::ConstraintEdgeSetTy & getCopyOutEdges() const
const_iterator incomingAddrsEnd() const
const ConstraintEdge::ConstraintEdgeSetTy & getStoreInEdges() const
NodeID getSrcID() const
get methods of the components
IDToNodeMapTy::const_iterator const_iterator
static Steensgaard * steens
void ecUnion(NodeID id, NodeID ec)
merge node into equiv class and merge node's pts into ec's pts
void setEC(NodeID node, NodeID rep)
virtual void solveWorklist() override
std::unordered_set< Key, Hash, KeyEqual, Allocator > Set