Static Value-Flow Analysis
Loading...
Searching...
No Matches
Public Member Functions | Static Public Member Functions | Private Attributes | List of all members
SVF::CallCFGEdge Class Reference

#include <ICFGEdge.h>

Inheritance diagram for SVF::CallCFGEdge:
SVF::ICFGEdge SVF::GenericEdge< NodeTy >

Public Member Functions

 CallCFGEdge (ICFGNode *s, ICFGNode *d)
 Constructor.
 
void addCallPE (const CallPE *callPE)
 Add call parameter edge to this CallCFGEdge.
 
const CallICFGNode * getCallSite () const
 Return call ICFGNode at the callsite.
 
const std::vector< const CallPE * > & getCallPEs () const
 Add get parameter edge to this CallCFGEdge.
 
virtual const std::string toString () const
 
- Public Member Functions inherited from SVF::ICFGEdge
 ICFGEdge (ICFGNode *s, ICFGNode *d, GEdgeFlag k)
 Constructor.
 
 ~ICFGEdge ()
 Destructor.
 
bool isCFGEdge () const
 Get methods of the components.
 
bool isCallCFGEdge () const
 
bool isRetCFGEdge () const
 
bool isIntraCFGEdge () const
 
- Public Member Functions inherited from SVF::GenericEdge< NodeTy >
 GenericEdge (NodeTy *s, NodeTy *d, GEdgeFlag k)
 Constructor.
 
virtual ~GenericEdge ()
 Destructor.
 
NodeID getSrcID () const
 get methods of the components
 
NodeID getDstID () const
 
GEdgeKind getEdgeKind () const
 
GEdgeKind getEdgeKindWithoutMask () const
 
NodeType * getSrcNode () const
 
NodeType * getDstNode () const
 
virtual bool operator== (const GenericEdge< NodeType > *rhs) const
 

Static Public Member Functions

static bool classof (const CallCFGEdge *)
 Methods for support type inquiry through isa, cast, and dyn_cast:
 
static bool classof (const ICFGEdge *edge)
 
static bool classof (const GenericICFGEdgeTy *edge)
 
- Static Public Member Functions inherited from SVF::ICFGEdge
static GEdgeFlag makeEdgeFlagWithInvokeID (GEdgeKind k, CallSiteID cs)
 Compute the unique edgeFlag value from edge kind and CallSiteID.
 

Private Attributes

std::vector< const CallPE * > callPEs
 

Additional Inherited Members

- Public Types inherited from SVF::ICFGEdge
enum  ICFGEdgeK { IntraCF , CallCF , RetCF }
 
typedef ICFGEdgeK SVFGEdgeK
 
typedef GenericNode< ICFGNode, ICFGEdge >::GEdgeSetTy ICFGEdgeSetTy
 
typedef ICFGEdgeSetTy SVFGEdgeSetTy
 
- Public Types inherited from SVF::GenericEdge< NodeTy >
typedef NodeTy NodeType
 Node type.
 
typedef u64_t GEdgeFlag
 
typedef s64_t GEdgeKind
 
typedef struct SVF::GenericEdge::equalGEdge equalGEdge
 Add the hash function for std::set (we also can overload operator< to implement this)
 
- Static Protected Attributes inherited from SVF::GenericEdge< NodeTy >
static constexpr unsigned char EdgeKindMaskBits = 8
 We use the lower 8 bits to denote edge kind.
 
static constexpr u64_t EdgeKindMask = (~0ULL) >> (64 - EdgeKindMaskBits)
 

Detailed Description

Call ICFG edge representing parameter passing/return from a caller to a callee

Definition at line 179 of file ICFGEdge.h.

Constructor & Destructor Documentation

◆ CallCFGEdge()

SVF::CallCFGEdge::CallCFGEdge ( ICFGNode *  s,
ICFGNode *  d 
)
inline

Constructor.

Definition at line 187 of file ICFGEdge.h.

188 : ICFGEdge(s, d, CallCF)
189 {
190 }
ICFGEdge(ICFGNode *s, ICFGNode *d, GEdgeFlag k)
Constructor.
Definition ICFGEdge.h:62
llvm::IRBuilder IRBuilder
Definition BasicTypes.h:76

Member Function Documentation

◆ addCallPE()

void SVF::CallCFGEdge::addCallPE ( const CallPE *  callPE)
inline

Add call parameter edge to this CallCFGEdge.

Definition at line 192 of file ICFGEdge.h.

193 {
194 callPEs.push_back(callPE);
195 }
std::vector< const CallPE * > callPEs
Definition ICFGEdge.h:183

◆ classof() [1/3]

static bool SVF::CallCFGEdge::classof ( const CallCFGEdge *  )
inlinestatic

Methods for support type inquiry through isa, cast, and dyn_cast:

Definition at line 209 of file ICFGEdge.h.

210 {
211 return true;
212 }

◆ classof() [2/3]

static bool SVF::CallCFGEdge::classof ( const GenericICFGEdgeTy *  edge)
inlinestatic

Definition at line 217 of file ICFGEdge.h.

218 {
219 return edge->getEdgeKind() == CallCF;
220 }

◆ classof() [3/3]

static bool SVF::CallCFGEdge::classof ( const ICFGEdge *  edge)
inlinestatic

Definition at line 213 of file ICFGEdge.h.

214 {
215 return edge->getEdgeKind() == CallCF;
216 }

◆ getCallPEs()

const std::vector< const CallPE * > & SVF::CallCFGEdge::getCallPEs ( ) const
inline

Add get parameter edge to this CallCFGEdge.

Definition at line 203 of file ICFGEdge.h.

204 {
205 return callPEs;
206 }

◆ getCallSite()

const CallICFGNode * SVF::CallCFGEdge::getCallSite ( ) const
inline

Return call ICFGNode at the callsite.

Definition at line 197 of file ICFGEdge.h.

198 {
199 assert(SVFUtil::isa<CallICFGNode>(getSrcNode()) && "not a CallICFGNode?");
200 return SVFUtil::cast<CallICFGNode>(getSrcNode());
201 }
NodeType * getSrcNode() const

◆ toString()

const std::string CallCFGEdge::toString ( ) const
virtual

Reimplemented from SVF::ICFGEdge.

Definition at line 175 of file ICFG.cpp.

176{
177 std::string str;
178 std::stringstream rawstr(str);
179 rawstr << "CallCFGEdge " << " [ICFGNode";
180 rawstr << getDstID() << " <-- ICFGNode" << getSrcID() << "]\t CallSite: " << getSrcNode()->toString() << "\t";
181 return rawstr.str();
182}
NodeID getDstID() const
NodeID getSrcID() const
get methods of the components

Member Data Documentation

◆ callPEs

std::vector<const CallPE*> SVF::CallCFGEdge::callPEs
private

Definition at line 183 of file ICFGEdge.h.


The documentation for this class was generated from the following files: