Static Value-Flow Analysis
Loading...
Searching...
No Matches
SVF::RetPE Class Reference

#include <SVFStatements.h>

Inheritance diagram for SVF::RetPE:
SVF::AssignStmt SVF::SVFStmt SVF::GenericEdge< SVFVar > SVF::TDJoinPE

Public Member Functions

 RetPE (SVFVar *s, SVFVar *d, const CallICFGNode *i, const FunExitICFGNode *e, GEdgeKind k=SVFStmt::Ret)
 constructor
const CallICFGNode * getCallInst () const
 Get method for call instruction at caller.
const CallICFGNode * getCallSite () const
const FunExitICFGNode * getFunExitICFGNode () const
const ValVar * getRHSVar () const
const ValVar * getLHSVar () const
const ValVar * getSrcNode () const
const ValVar * getDstNode () const
virtual const std::string toString () const override
Public Member Functions inherited from SVF::AssignStmt
SVFVar * getRHSVar () const
SVFVar * getLHSVar () const
NodeID getRHSVarID () const
NodeID getLHSVarID () const
Public Member Functions inherited from SVF::SVFStmt
 SVFStmt (SVFVar *s, SVFVar *d, GEdgeFlag k, bool real=true)
 Constructor.
 ~SVFStmt ()
 Destructor.
EdgeID getEdgeID () const
 Return Edge ID.
virtual bool isPTAEdge () const
 Whether src and dst nodes are both of pointer type.
void setValue (const SVFVar *val)
 Get/set methods for llvm instruction.
const SVFVar * getValue () const
void setBB (const SVFBasicBlock *bb)
const SVFBasicBlock * getBB () const
void setICFGNode (ICFGNode *node)
ICFGNode * getICFGNode () const
Public Member Functions inherited from SVF::GenericEdge< SVFVar >
 GenericEdge (SVFVar *s, SVFVar *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 RetPE *)
 the function exit statement returned from
static bool classof (const SVFStmt *edge)
static bool classof (const GenericPAGEdgeTy *edge)
Static Public Member Functions inherited from SVF::AssignStmt
static bool classof (const AssignStmt *)
 Methods for support type inquiry through isa, cast, and dyn_cast:
static bool classof (const SVFStmt *edge)
static bool classof (const GenericPAGEdgeTy *edge)
Static Public Member Functions inherited from SVF::SVFStmt
static bool classof (const SVFStmt *)
 ClassOf.
static bool classof (const GenericPAGEdgeTy *edge)
static GEdgeFlag makeEdgeFlagWithAddionalOpnd (GEdgeKind k, const SVFVar *var)
static GEdgeFlag makeEdgeFlagWithCallInst (GEdgeKind k, const ICFGNode *cs)
static GEdgeFlag makeEdgeFlagWithStoreInst (GEdgeKind k, const ICFGNode *store)
static const Inst2LabelMap * getInst2LabelMap ()
static const Var2LabelMap * getVar2LabelMap ()
static const u64_t * getCallEdgeLabelCounter ()
static const u64_t * getStoreEdgeLabelCounter ()
static const u64_t * getMultiOpndLabelCounter ()

Private Member Functions

 RetPE (const RetPE &)
 place holder
void operator= (const RetPE &)
 place holder

Private Attributes

const CallICFGNode * call
const FunExitICFGNode * exit
 the callsite statement returning to

Friends

class GraphDBClient

Additional Inherited Members

Public Types inherited from SVF::SVFStmt
enum  PEDGEK {
  Addr , Copy , Store , Load ,
  Call , Ret , Gep , Phi ,
  Select , Cmp , BinaryOp , UnaryOp ,
  Branch , ThreadFork , ThreadJoin
}
typedef GenericNode< SVFVar, SVFStmt >::GEdgeSetTy SVFStmtSetTy
typedef Map< EdgeID, SVFStmtSetTy > PAGEdgeToSetMapTy
typedef PAGEdgeToSetMapTy KindToSVFStmtMapTy
typedef SVFStmtSetTy PAGEdgeSetTy
Public Types inherited from SVF::GenericEdge< SVFVar >
typedef SVFVar 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).
Protected Member Functions inherited from SVF::AssignStmt
 AssignStmt (SVFVar *s, SVFVar *d, GEdgeFlag k)
 constructor
Protected Member Functions inherited from SVF::SVFStmt
 SVFStmt (GEdgeFlag k)
 Private constructor for reading SVFIR from file without side-effect.
 SVFStmt (SVFVar *s, SVFVar *d, GEdgeFlag k, EdgeID eid, SVFVar *value, ICFGNode *icfgNode, bool real=true)
void setBasicBlock (const SVFBasicBlock *bb)
void setCallEdgeLabelCounter (u64_t counter)
void setStoreEdgeLabelCounter (u64_t counter)
void setMultiOpndLabelCounter (u64_t counter)
Static Protected Member Functions inherited from SVF::SVFStmt
static void addInst2Labeled (const ICFGNode *cs, u32_t label)
static void addVar2Labeled (const SVFVar *var, u32_t label)
Static Protected Attributes inherited from SVF::GenericEdge< SVFVar >
static constexpr unsigned char EdgeKindMaskBits
 We use the lower 8 bits to denote edge kind.
static constexpr u64_t EdgeKindMask

Detailed Description

Return

Definition at line 696 of file SVFStatements.h.

Constructor & Destructor Documentation

◆ RetPE() [1/2]

SVF::RetPE::RetPE ( const RetPE & )
private

place holder

◆ RetPE() [2/2]

RetPE::RetPE ( SVFVar * s,
SVFVar * d,
const CallICFGNode * i,
const FunExitICFGNode * e,
GEdgeKind k = SVFStmt::Ret )

constructor

Definition at line 516 of file SVFStatements.cpp.

518 : AssignStmt(s, d, makeEdgeFlagWithCallInst(k, i)), call(i), exit(e)
519{
520}
AssignStmt()
place holder
const FunExitICFGNode * exit
the callsite statement returning to
const CallICFGNode * call
static GEdgeFlag makeEdgeFlagWithCallInst(GEdgeKind k, const ICFGNode *cs)

Member Function Documentation

◆ classof() [1/3]

bool SVF::RetPE::classof ( const GenericPAGEdgeTy * edge)
inlinestatic

Definition at line 719 of file SVFStatements.h.

720 {
721 return edge->getEdgeKind() == SVFStmt::Ret ||
722 edge->getEdgeKind() == SVFStmt::ThreadJoin;
723 }

◆ classof() [2/3]

bool SVF::RetPE::classof ( const RetPE * )
inlinestatic

the function exit statement returned from

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

Definition at line 710 of file SVFStatements.h.

711 {
712 return true;
713 }

◆ classof() [3/3]

bool SVF::RetPE::classof ( const SVFStmt * edge)
inlinestatic

Definition at line 714 of file SVFStatements.h.

715 {
716 return edge->getEdgeKind() == SVFStmt::Ret ||
717 edge->getEdgeKind() == SVFStmt::ThreadJoin;
718 }

◆ getCallInst()

const CallICFGNode * SVF::RetPE::getCallInst ( ) const
inline

Get method for call instruction at caller.

Definition at line 732 of file SVFStatements.h.

733 {
734 return call;
735 }

◆ getCallSite()

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

Definition at line 736 of file SVFStatements.h.

737 {
738 return call;
739 }

◆ getDstNode()

const ValVar * RetPE::getDstNode ( ) const

Definition at line 405 of file SVFStatements.cpp.

406{
407 return getLHSVar();
408}
const ValVar * getLHSVar() const

◆ getFunExitICFGNode()

const FunExitICFGNode * SVF::RetPE::getFunExitICFGNode ( ) const
inline

Definition at line 740 of file SVFStatements.h.

741 {
742 return exit;
743 }

◆ getLHSVar()

const ValVar * RetPE::getLHSVar ( ) const

Definition at line 397 of file SVFStatements.cpp.

398{
400}
NodeType * getDstNode() const
std::enable_if_t<!is_simple_type< Y >::value, typename cast_retty< X, const Y >::ret_type > cast(const Y &Val)
Definition Casting.h:360

◆ getRHSVar()

const ValVar * RetPE::getRHSVar ( ) const

Definition at line 393 of file SVFStatements.cpp.

394{
396}
NodeType * getSrcNode() const

◆ getSrcNode()

const ValVar * RetPE::getSrcNode ( ) const

Definition at line 401 of file SVFStatements.cpp.

402{
403 return getRHSVar();
404}
const ValVar * getRHSVar() const

◆ operator=()

void SVF::RetPE::operator= ( const RetPE & )
private

place holder

◆ toString()

const std::string RetPE::toString ( ) const
overridevirtual

Implements SVF::AssignStmt.

Reimplemented in SVF::TDJoinPE.

Definition at line 261 of file SVFStatements.cpp.

262{
263 std::string str;
264 std::stringstream rawstr(str);
265 rawstr << "RetPE: [Var" << getLHSVarID() << " <-- Var" << getRHSVarID() << "]\t";
267 {
268 rawstr << "\n";
269 rawstr << getValue()->toString();
270 }
271 return rawstr.str();
272}
NodeID getRHSVarID() const
NodeID getLHSVarID() const
static const Option< bool > ShowSVFIRValue
Definition Options.h:120
const SVFVar * getValue() const
virtual const std::string toString() const
Get string representation.

◆ GraphDBClient

friend class GraphDBClient
friend

Definition at line 698 of file SVFStatements.h.

Member Data Documentation

◆ call

const CallICFGNode* SVF::RetPE::call
private

Definition at line 704 of file SVFStatements.h.

◆ exit

const FunExitICFGNode* SVF::RetPE::exit
private

the callsite statement returning to

Definition at line 705 of file SVFStatements.h.


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