44 typedef ConstraintEdge::ConstraintEdgeSetTy::iterator
iterator;
264 assert(inEdge->
getDstID() == this->getId());
267 bool both_added = added1 & added2;
268 assert(both_added &&
"edge not added, duplicated adding!!");
280 bool both_added = added1 & added2;
281 assert(both_added &&
"edge not added, duplicated adding!!");
288 bool both_added = added1 & added2;
289 assert(both_added &&
"edge not added, duplicated adding!!");
294 assert(outEdge->
getSrcID() == this->getId());
297 bool both_added = added1 & added2;
298 assert(both_added &&
"edge not added, duplicated adding!!");
309 bool removed = (num1 > 0) & (num2 > 0);
310 assert(removed &&
"edge not in the set, can not remove!!!");
318 bool removed = (num1 > 0) & (num2 > 0);
319 assert(removed &&
"edge not in the set, can not remove!!!");
325 if (SVFUtil::isa<GepCGEdge>(outEdge))
331 bool removed = (num1 > 0) & (num2 > 0);
332 assert(removed &&
"edge not in the set, can not remove!!!");
338 if (SVFUtil::isa<GepCGEdge>(inEdge))
344 bool removed = (num1 > 0) & (num2 > 0);
345 assert(removed &&
"edge not in the set, can not remove!!!");
353 bool removed = (num1 > 0) & (num2 > 0);
354 assert(removed &&
"edge not in the set, can not remove!!!");
362 bool removed = (num1 > 0) & (num2 > 0);
363 assert(removed &&
"edge not in the set, can not remove!!!");
371 bool removed = (num1 > 0) & (num2 > 0);
372 assert(removed &&
"edge not in the set, can not remove!!!");
380 bool removed = (num1 > 0) & (num2 > 0);
381 assert(removed &&
"edge not in the set, can not remove!!!");
GenericNode< ConstraintNode, ConstraintEdge >::GEdgeSetTy ConstraintEdgeSetTy
Constraint edge type.
const ConstraintEdge::ConstraintEdgeSetTy & getDirectOutEdges() const
const_iterator incomingLoadsEnd() const
bool isPWCNode() const
Whether a node involves in PWC, if so, all its points-to elements should become field-insensitive.
ConstraintEdge::ConstraintEdgeSetTy copyOutEdges
const_iterator outgoingLoadsEnd() const
bool isdirectEdge(ConstraintEdge::ConstraintEdgeK kind)
Direct and Indirect SVFIR edges.
bool addOutgoingStoreEdge(StoreCGEdge *outEdge)
const_iterator incomingAddrsBegin() const
const ConstraintEdge::ConstraintEdgeSetTy & getGepOutEdges() const
ConstraintEdge::ConstraintEdgeSetTy::iterator iterator
iterator directInEdgeEnd()
void addIncomingStoreEdge(StoreCGEdge *inEdge)
ConstraintEdge::ConstraintEdgeSetTy addressInEdges
all incoming address edge of this node
void addOutgoingCopyEdge(CopyCGEdge *outEdge)
bool removeOutgoingStoreEdge(StoreCGEdge *outEdge)
bool removeIncomingStoreEdge(StoreCGEdge *inEdge)
const ConstraintEdge::ConstraintEdgeSetTy & getDirectInEdges() const
Return constraint edges.
bool addOutgoingDirectEdge(ConstraintEdge *outEdge)
bool addIncomingDirectEdge(ConstraintEdge *inEdge)
static bool classof(const ConstraintNode *)
Methods for support type inquiry through isa, cast, and dyn_cast:
ConstraintEdge::ConstraintEdgeSetTy gepInEdges
ConstraintEdge::ConstraintEdgeSetTy copyInEdges
ConstraintEdge::ConstraintEdgeSetTy directInEdges
ConstraintEdge::ConstraintEdgeSetTy gepOutEdges
const ConstraintEdge::ConstraintEdgeSetTy & getLoadOutEdges() const
const_iterator incomingStoresBegin() const
bool removeIncomingAddrEdge(AddrCGEdge *inEdge)
friend OutStream & operator<<(OutStream &o, const ConstraintNode &node)
Overloading operator << for dumping node.
virtual const std::string toString() const
const_iterator outgoingStoresEnd() const
bool removeOutgoingDirectEdge(ConstraintEdge *outEdge)
bool removeIncomingDirectEdge(ConstraintEdge *inEdge)
bool removeOutgoingLoadEdge(LoadCGEdge *outEdge)
const_iterator incomingLoadsBegin() const
static bool classof(const GenericICFGNodeTy *node)
const_iterator outgoingAddrsBegin() const
ConstraintEdge::ConstraintEdgeSetTy loadOutEdges
all outgoing load edge of this node
const ConstraintEdge::ConstraintEdgeSetTy & getStoreOutEdges() const
NodeBS strides
For stride-based field representation.
bool isIndirectEdge(ConstraintEdge::ConstraintEdgeK kind)
ConstraintEdge::ConstraintEdgeSetTy storeOutEdges
all outgoing store edge of this node
const_iterator incomingStoresEnd() const
const ConstraintEdge::ConstraintEdgeSetTy & getAddrOutEdges() const
iterator directInEdgeBegin()
const_iterator outgoingStoresBegin() const
void addIncomingLoadEdge(LoadCGEdge *inEdge)
bool removeIncomingLoadEdge(LoadCGEdge *inEdge)
ConstraintEdge::ConstraintEdgeSetTy storeInEdges
all incoming store edge of this node
iterator directOutEdgeEnd()
const ConstraintEdge::ConstraintEdgeSetTy & getCopyInEdges() const
bool addOutgoingLoadEdge(LoadCGEdge *outEdge)
void addIncomingGepEdge(GepCGEdge *inEdge)
ConstraintEdge::ConstraintEdgeSetTy::const_iterator const_iterator
const ConstraintEdge::ConstraintEdgeSetTy & getCopyOutEdges() const
bool removeOutgoingAddrEdge(AddrCGEdge *outEdge)
Remove constraint graph edges.
void addOutgoingGepEdge(GepCGEdge *outEdge)
const ConstraintEdge::ConstraintEdgeSetTy & getLoadInEdges() const
const ConstraintEdge::ConstraintEdgeSetTy & getGepInEdges() const
ConstraintEdge::ConstraintEdgeSetTy & incomingAddrEdges()
static bool classof(const SVFBaseNode *node)
const_iterator outgoingAddrsEnd() const
void addIncomingCopyEdge(CopyCGEdge *inEdge)
Add constraint graph edges.
iterator directOutEdgeBegin()
Iterators.
ConstraintEdge::ConstraintEdgeSetTy & outgoingAddrEdges()
const ConstraintEdge::ConstraintEdgeSetTy & getAddrInEdges() const
const_iterator incomingAddrsEnd() const
const ConstraintEdge::ConstraintEdgeSetTy & getStoreInEdges() const
void addIncomingAddrEdge(AddrCGEdge *inEdge)
ConstraintEdge::ConstraintEdgeSetTy addressOutEdges
all outgoing address edge of this node
void addOutgoingAddrEdge(AddrCGEdge *outEdge)
const_iterator outgoingLoadsBegin() const
ConstraintEdge::ConstraintEdgeSetTy loadInEdges
all incoming load edge of this node
ConstraintEdge::ConstraintEdgeSetTy directOutEdges
NodeID getSrcID() const
get methods of the components
u32_t removeOutgoingEdge(EdgeType *edge)
bool addIncomingEdge(EdgeType *inEdge)
Add incoming and outgoing edges.
u32_t removeIncomingEdge(EdgeType *edge)
bool addOutgoingEdge(EdgeType *outEdge)
GNodeK getNodeKind() const
Get node kind.
GenericNode< ConstraintNode, ConstraintEdge > GenericConsNodeTy