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

#include <ICFGEdge.h>

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

Public Member Functions

 RetCFGEdge (ICFGNode *s, ICFGNode *d)
 Constructor.
 
void addRetPE (const RetPE *ret)
 Add call parameter edge to this CallCFGEdge.
 
const RetPE * getRetPE () const
 Add get parameter edge to this CallCFGEdge.
 
const CallICFGNode * getCallSite () const
 Return call ICFGNode at the callsite.
 
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 RetCFGEdge *)
 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

const RetPE * retPE
 

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

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

Definition at line 228 of file ICFGEdge.h.

Constructor & Destructor Documentation

◆ RetCFGEdge()

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

Constructor.

Definition at line 236 of file ICFGEdge.h.

237 : ICFGEdge(s, d, RetCF), retPE(nullptr)
238 {
239 }
ICFGEdge(ICFGNode *s, ICFGNode *d, GEdgeFlag k)
Constructor.
Definition ICFGEdge.h:62
const RetPE * retPE
Definition ICFGEdge.h:232
llvm::IRBuilder IRBuilder
Definition BasicTypes.h:76

Member Function Documentation

◆ addRetPE()

void SVF::RetCFGEdge::addRetPE ( const RetPE *  ret)
inline

Add call parameter edge to this CallCFGEdge.

Definition at line 241 of file ICFGEdge.h.

242 {
243 assert(!retPE && "we can only have one retPE for each RetCFGEdge");
244 retPE = ret;
245 }

◆ classof() [1/3]

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

Definition at line 264 of file ICFGEdge.h.

265 {
266 return edge->getEdgeKind() == RetCF;
267 }

◆ classof() [2/3]

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

Definition at line 260 of file ICFGEdge.h.

261 {
262 return edge->getEdgeKind() == RetCF;
263 }

◆ classof() [3/3]

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

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

Definition at line 256 of file ICFGEdge.h.

257 {
258 return true;
259 }

◆ getCallSite()

const CallICFGNode * RetCFGEdge::getCallSite ( ) const

Return call ICFGNode at the callsite.

Definition at line 194 of file ICFG.cpp.

195{
196 assert(SVFUtil::isa<RetICFGNode>(getDstNode()) && "not a RetICFGNode?");
197 return SVFUtil::cast<RetICFGNode>(getDstNode())->getCallICFGNode();
198}
NodeType * getDstNode() const

◆ getRetPE()

const RetPE * SVF::RetCFGEdge::getRetPE ( ) const
inline

Add get parameter edge to this CallCFGEdge.

Definition at line 247 of file ICFGEdge.h.

248 {
249 return retPE;
250 }

◆ toString()

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

Reimplemented from SVF::ICFGEdge.

Definition at line 184 of file ICFG.cpp.

185{
186 std::string str;
187 std::stringstream rawstr(str);
188 rawstr << "RetCFGEdge " << " [ICFGNode";
189 rawstr << getDstID() << " <-- ICFGNode" << getSrcID() << "]\t CallSite: " << getDstNode()->toString() << "\t";
190 return rawstr.str();
191}
NodeID getDstID() const
NodeID getSrcID() const
get methods of the components

Member Data Documentation

◆ retPE

const RetPE* SVF::RetCFGEdge::retPE
private

Definition at line 232 of file ICFGEdge.h.


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