149 assert(
getCondition() &&
"this is not a conditional branch edge");
204 assert(SVFUtil::isa<CallICFGNode>(
getSrcNode()) &&
"not a CallICFGNode?");
205 return SVFUtil::cast<CallICFGNode>(
getSrcNode());
250 assert(!
retPE &&
"we can only have one retPE for each RetCFGEdge");
virtual const std::string toString() const
static bool classof(const ICFGEdge *edge)
static bool classof(const CallCFGEdge *)
Methods for support type inquiry through isa, cast, and dyn_cast:
std::vector< const CallPE * > callPEs
const CallICFGNode * getCallSite() const
Return call ICFGNode at the callsite.
void addCallPE(const CallPE *callPE)
Add call parameter edge to this CallCFGEdge.
CallCFGEdge(ICFGNode *s, ICFGNode *d)
Constructor.
static bool classof(const GenericICFGEdgeTy *edge)
const std::vector< const CallPE * > & getCallPEs() const
Add get parameter edge to this CallCFGEdge.
NodeType * getSrcNode() const
GEdgeKind getEdgeKind() const
static constexpr unsigned char EdgeKindMaskBits
We use the lower 8 bits to denote edge kind.
OrderedSet< EdgeType *, typename EdgeType::equalGEdge > GEdgeSetTy
Edge kind.
static GEdgeFlag makeEdgeFlagWithInvokeID(GEdgeKind k, CallSiteID cs)
Compute the unique edgeFlag value from edge kind and CallSiteID.
bool isCallCFGEdge() const
bool isCFGEdge() const
Get methods of the components.
bool isIntraCFGEdge() const
virtual const std::string toString() const
GenericNode< ICFGNode, ICFGEdge >::GEdgeSetTy ICFGEdgeSetTy
ICFGEdge(ICFGNode *s, ICFGNode *d, GEdgeFlag k)
Constructor.
friend OutStream & operator<<(OutStream &o, const ICFGEdge &edge)
Overloading operator << for dumping ICFG node ID.
ICFGEdgeSetTy SVFGEdgeSetTy
bool isRetCFGEdge() const
s64_t getSuccessorCondValue() const
virtual const std::string toString() const
void setConditionVar(const SVFVar *c)
const SVFVar * conditionVar
static bool classof(const IntraCFGEdge *)
Methods for support type inquiry through isa, cast, and dyn_cast:
void setBranchCondVal(s64_t bVal)
static bool classof(const GenericICFGEdgeTy *edge)
static bool classof(const ICFGEdge *edge)
IntraCFGEdge(ICFGNode *s, ICFGNode *d)
Constructor.
const SVFVar * getCondition() const
const CallICFGNode * getCallSite() const
Return call ICFGNode at the callsite.
static bool classof(const GenericICFGEdgeTy *edge)
void addRetPE(const RetPE *ret)
Add call parameter edge to this CallCFGEdge.
RetCFGEdge(ICFGNode *s, ICFGNode *d)
Constructor.
static bool classof(const RetCFGEdge *)
Methods for support type inquiry through isa, cast, and dyn_cast:
virtual const std::string toString() const
static bool classof(const ICFGEdge *edge)
const RetPE * getRetPE() const
Add get parameter edge to this CallCFGEdge.
GenericEdge< ICFGNode > GenericICFGEdgeTy