30 #ifndef OFFLINECONSG_H 31 #define OFFLINECONSG_H 83 NodeSet::const_iterator it = refNodes.find(node);
84 return it != refNodes.end();
89 NodeToRepMap::const_iterator it = nodeToRefMap.find(node);
90 return it != nodeToRefMap.end();
95 NodeToRepMap::const_iterator it = nodeToRefMap.find(node);
96 assert(it != nodeToRefMap.end() &&
"No such ref node in ref to node map!");
107 void dump(std::string name);
112 NodeToRepMap::const_iterator it = norToRepMap.find(nor);
113 return it != norToRepMap.end();
118 norToRepMap.insert(std::pair<NodeID, NodeID>(nor, rep));
123 NodeToRepMap::const_iterator it = norToRepMap.find(nor);
124 assert(it != norToRepMap.end() &&
"No such rep node in nor to rep map!");
144 template<>
struct GraphTraits<
SVF::
OfflineConsG*> :
public GraphTraits<SVF::GenericGraph<SVF::ConstraintNode,SVF::ConstraintEdge>* >
151 #endif //OFFLINECONSG_H
bool hasOCGRep(NodeID node) const
bool addRefLoadEdge(NodeID src, NodeID dst)
Map< NodeID, NodeID > NodeToRepMap
void setNorRep(NodeID nor, NodeID rep)
void solveOfflineSCC(OSCC *oscc)
SVF::ConstraintNode * NodeRef
NodeID getNorRep(NodeID nor) const
bool hasRef(NodeID node) const
Set< StoreCGEdge * > StoreEdges
NodeToRepMap nodeToRefMap
bool hasNorRep(NodeID nor) const
std::unordered_set< Key, Hash, KeyEqual, Allocator > Set
const NodeToRepMap & getOCGRepMap() const
bool isaRef(NodeID node) const
bool addRefStoreEdge(NodeID src, NodeID dst)
NodeID getOCGRep(NodeID node) const
bool createRefNode(NodeID nodeId)
SCCDetection< OfflineConsG * > OSCC
Set< LoadCGEdge * > LoadEdges
void buildOfflineMap(OSCC *oscc)
NodeID solveRep(OSCC *oscc, NodeID rep)
void dump(std::string name)
NodeID getRef(NodeID node) const