Static Value-Flow Analysis
Loading...
Searching...
No Matches
Public Member Functions | Static Public Member Functions | Protected Member Functions | Private Member Functions | Friends | List of all members
SVF::AssignStmt Class Referenceabstract

#include <SVFStatements.h>

Inheritance diagram for SVF::AssignStmt:
SVF::SVFStmt SVF::GenericEdge< NodeTy > SVF::AddrStmt SVF::CopyStmt SVF::GepStmt SVF::LoadStmt SVF::RetPE SVF::StoreStmt SVF::TDJoinPE

Public Member Functions

SVFVar * getRHSVar () const
 
SVFVar * getLHSVar () const
 
NodeID getRHSVarID () const
 
NodeID getLHSVarID () const
 
virtual const std::string toString () const =0
 
- 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< 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 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 ()
 

Protected Member Functions

 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)
 

Private Member Functions

 AssignStmt ()
 place holder
 
 AssignStmt (const AssignStmt &)
 place holder
 
void operator= (const AssignStmt &)
 place holder
 
SVFVar * getSrcNode ()
 not allowed, use getRHSVar() instead
 
SVFVar * getDstNode ()
 not allowed, use getLHSVar() instead
 
NodeID getSrcID ()
 not allowed, use getRHSVarID() instead
 
NodeID getDstID ()
 not allowed, use getLHSVarID() instead
 

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< 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 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< 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

Definition at line 309 of file SVFStatements.h.

Constructor & Destructor Documentation

◆ AssignStmt() [1/3]

SVF::AssignStmt::AssignStmt ( )
private

place holder

◆ AssignStmt() [2/3]

SVF::AssignStmt::AssignStmt ( const AssignStmt &  )
private

place holder

◆ AssignStmt() [3/3]

SVF::AssignStmt::AssignStmt ( SVFVar *  s,
SVFVar *  d,
GEdgeFlag  k 
)
inlineprotected

constructor

Definition at line 324 of file SVFStatements.h.

324: SVFStmt(s, d, k) {}
SVFStmt(GEdgeFlag k)
Private constructor for reading SVFIR from file without side-effect.
llvm::IRBuilder IRBuilder
Definition BasicTypes.h:76

Member Function Documentation

◆ classof() [1/3]

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

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

Definition at line 329 of file SVFStatements.h.

330 {
331 return true;
332 }

◆ classof() [2/3]

static bool SVF::AssignStmt::classof ( const GenericPAGEdgeTy *  edge)
inlinestatic

Definition at line 343 of file SVFStatements.h.

344 {
345 return edge->getEdgeKind() == SVFStmt::Addr ||
346 edge->getEdgeKind() == SVFStmt::Copy ||
347 edge->getEdgeKind() == SVFStmt::Store ||
348 edge->getEdgeKind() == SVFStmt::Load ||
349 edge->getEdgeKind() == SVFStmt::Ret ||
350 edge->getEdgeKind() == SVFStmt::Gep ||
351 edge->getEdgeKind() == SVFStmt::ThreadJoin;
352 }

◆ classof() [3/3]

static bool SVF::AssignStmt::classof ( const SVFStmt *  edge)
inlinestatic

Definition at line 333 of file SVFStatements.h.

334 {
335 return edge->getEdgeKind() == SVFStmt::Addr ||
336 edge->getEdgeKind() == SVFStmt::Copy ||
337 edge->getEdgeKind() == SVFStmt::Store ||
338 edge->getEdgeKind() == SVFStmt::Load ||
339 edge->getEdgeKind() == SVFStmt::Ret ||
340 edge->getEdgeKind() == SVFStmt::Gep ||
341 edge->getEdgeKind() == SVFStmt::ThreadJoin;
342 }

◆ getDstID()

NodeID SVF::AssignStmt::getDstID ( )
private

not allowed, use getLHSVarID() instead

◆ getDstNode()

SVFVar * SVF::AssignStmt::getDstNode ( )
private

not allowed, use getLHSVar() instead

◆ getLHSVar()

SVFVar * SVF::AssignStmt::getLHSVar ( ) const
inline

Definition at line 359 of file SVFStatements.h.

360 {
361 return SVFStmt::getDstNode();
362 }
NodeType * getDstNode() const

◆ getLHSVarID()

NodeID SVF::AssignStmt::getLHSVarID ( ) const
inline

Definition at line 367 of file SVFStatements.h.

368 {
369 return SVFStmt::getDstID();
370 }
NodeID getDstID() const

◆ getRHSVar()

SVFVar * SVF::AssignStmt::getRHSVar ( ) const
inline

Definition at line 355 of file SVFStatements.h.

356 {
357 return SVFStmt::getSrcNode();
358 }
NodeType * getSrcNode() const

◆ getRHSVarID()

NodeID SVF::AssignStmt::getRHSVarID ( ) const
inline

Definition at line 363 of file SVFStatements.h.

364 {
365 return SVFStmt::getSrcID();
366 }
NodeID getSrcID() const
get methods of the components

◆ getSrcID()

NodeID SVF::AssignStmt::getSrcID ( )
private

not allowed, use getRHSVarID() instead

◆ getSrcNode()

SVFVar * SVF::AssignStmt::getSrcNode ( )
private

not allowed, use getRHSVar() instead

◆ operator=()

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

place holder

◆ toString()

virtual const std::string SVF::AssignStmt::toString ( ) const
pure virtual

Friends And Related Symbol Documentation

◆ GraphDBClient

friend class GraphDBClient
friend

Definition at line 311 of file SVFStatements.h.


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