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

#include <SVFStatements.h>

Inheritance diagram for SVF::UnaryOPStmt:
SVF::SVFStmt SVF::GenericEdge< SVFVar >

Public Types

enum  OpCode : unsigned { FNeg = 12 }
 OpCode for UnaryOPStmt, enum value is same to llvm::UnaryOperator. More...
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).

Public Member Functions

 UnaryOPStmt (ValVar *s, ValVar *d, u32_t oc)
 constructor
u32_t getOpcode () const
const ValVar * getOpVar () const
const ValVar * getRes () const
NodeID getOpVarID () const
NodeID getResID () const
virtual const std::string toString () const override
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 UnaryOPStmt *)
 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

 UnaryOPStmt (const UnaryOPStmt &)
 place holder
void operator= (const UnaryOPStmt &)
 place holder
SVFVar * getSrcNode ()
 place holder, use getOpVar() instead
SVFVar * getDstNode ()
 place holder, use getRes() instead
NodeID getSrcID ()
 place holder, use getOpVarID(pos) instead
NodeID getDstID ()
 place holder, use getResID() instead

Private Attributes

u32_t opcode

Friends

class GraphDBClient

Additional Inherited Members

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

Unary statement

Definition at line 1190 of file SVFStatements.h.

Member Enumeration Documentation

◆ OpCode

enum SVF::UnaryOPStmt::OpCode : unsigned

OpCode for UnaryOPStmt, enum value is same to llvm::UnaryOperator.

Enumerator
FNeg 

Definition at line 1206 of file SVFStatements.h.

1207 {
1208 FNeg = 12
1209 };

Constructor & Destructor Documentation

◆ UnaryOPStmt() [1/2]

SVF::UnaryOPStmt::UnaryOPStmt ( const UnaryOPStmt & )
private

place holder

◆ UnaryOPStmt() [2/2]

UnaryOPStmt::UnaryOPStmt ( ValVar * s,
ValVar * d,
u32_t oc )

constructor

Definition at line 487 of file SVFStatements.cpp.

488 : SVFStmt(s, d, SVFStmt::UnaryOp), opcode(oc)
489{
490}
SVFStmt(GEdgeFlag k)
Private constructor for reading SVFIR from file without side-effect.

Member Function Documentation

◆ classof() [1/3]

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

Definition at line 1221 of file SVFStatements.h.

1222 {
1223 return edge->getEdgeKind() == SVFStmt::UnaryOp;
1224 }

◆ classof() [2/3]

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

Definition at line 1217 of file SVFStatements.h.

1218 {
1219 return edge->getEdgeKind() == SVFStmt::UnaryOp;
1220 }

◆ classof() [3/3]

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

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

Definition at line 1213 of file SVFStatements.h.

1214 {
1215 return true;
1216 }

◆ getDstID()

NodeID SVF::UnaryOPStmt::getDstID ( )
private

place holder, use getResID() instead

◆ getDstNode()

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

place holder, use getRes() instead

◆ getOpcode()

u32_t SVF::UnaryOPStmt::getOpcode ( ) const
inline

Definition at line 1230 of file SVFStatements.h.

1231 {
1232 return opcode;
1233 }

◆ getOpVar()

const ValVar * UnaryOPStmt::getOpVar ( ) const

Definition at line 448 of file SVFStatements.cpp.

449{
451}
NodeType * getSrcNode() 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

◆ getOpVarID()

NodeID UnaryOPStmt::getOpVarID ( ) const

Definition at line 439 of file SVFStatements.cpp.

440{
441 return getOpVar()->getId();
442}
NodeID getId() const
Get ID.
Definition SVFValue.h:158
const ValVar * getOpVar() const

◆ getRes()

const ValVar * UnaryOPStmt::getRes ( ) const

Definition at line 452 of file SVFStatements.cpp.

453{
455}
NodeType * getDstNode() const

◆ getResID()

NodeID UnaryOPStmt::getResID ( ) const

Definition at line 443 of file SVFStatements.cpp.

444{
445 return getRes()->getId();
446}
const ValVar * getRes() const

◆ getSrcID()

NodeID SVF::UnaryOPStmt::getSrcID ( )
private

place holder, use getOpVarID(pos) instead

◆ getSrcNode()

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

place holder, use getOpVar() instead

◆ operator=()

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

place holder

◆ toString()

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

Reimplemented from SVF::SVFStmt.

Definition at line 168 of file SVFStatements.cpp.

169{
170 std::string str;
171 std::stringstream rawstr(str);
172 rawstr << "UnaryOPStmt: [Var" << getResID() << " <-- " << " opcode" << getOpcode() << " Var" << getOpVarID() << "]\t";
174 {
175 rawstr << "\n";
176 rawstr << getValue()->toString();
177 }
178 return rawstr.str();
179}
static const Option< bool > ShowSVFIRValue
Definition Options.h:120
const SVFVar * getValue() const
virtual const std::string toString() const
Get string representation.
NodeID getOpVarID() const
NodeID getResID() const
u32_t getOpcode() const

◆ GraphDBClient

friend class GraphDBClient
friend

Definition at line 1192 of file SVFStatements.h.

Member Data Documentation

◆ opcode

u32_t SVF::UnaryOPStmt::opcode
private

Definition at line 1202 of file SVFStatements.h.


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