#include <SVFStatements.h>
|
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 |
|
typedef NodeTy | NodeType |
| Node type. More...
|
|
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) More...
|
|
Definition at line 51 of file SVFStatements.h.
◆ Inst2LabelMap
◆ KindToSVFStmtMapTy
◆ PAGEdgeSetTy
◆ PAGEdgeToSetMapTy
◆ SVFStmtSetTy
◆ Var2LabelMap
◆ PEDGEK
Types of SVFIR statements Gep represents (base + offset) for field sensitivity ThreadFork/ThreadJoin is to model parameter passings between thread spawners and spawnees.
Enumerator |
---|
Addr | |
Copy | |
Store | |
Load | |
Call | |
Ret | |
Gep | |
Phi | |
Select | |
Cmp | |
BinaryOp | |
UnaryOp | |
Branch | |
ThreadFork | |
ThreadJoin | |
Definition at line 61 of file SVFStatements.h.
◆ SVFStmt() [1/2]
Private constructor for reading SVFIR from file without side-effect.
Definition at line 88 of file SVFStatements.h.
ICFGNode * icfgNode
ICFGNode.
const SVFValue * value
LLVM value.
const SVFBasicBlock * basicBlock
LLVM BasicBlock.
GenericEdge< SVFVar > GenericPAGEdgeTy
◆ SVFStmt() [2/2]
Constructor.
SVFStmt constructor
Definition at line 48 of file SVFStatements.cpp.
u32_t getTotalEdgeNum() const
static SVFIR * getPAG(bool buildFromFile=false)
Singleton design here to make sure we only have one instance during any analysis.
◆ ~SVFStmt()
SVF::SVFStmt::~SVFStmt |
( |
| ) |
|
|
inline |
◆ classof() [1/2]
◆ classof() [2/2]
static bool SVF::SVFStmt::classof |
( |
const SVFStmt * |
| ) |
|
|
inlinestatic |
◆ getBB()
◆ getEdgeID()
EdgeID SVF::SVFStmt::getEdgeID |
( |
| ) |
const |
|
inline |
◆ getICFGNode()
ICFGNode* SVF::SVFStmt::getICFGNode |
( |
| ) |
const |
|
inline |
◆ getInst()
Get/set methods for llvm instruction.
Definition at line 137 of file SVFStatements.h.
139 if (
const SVFInstruction* i = SVFUtil::dyn_cast<SVFInstruction>(
value))
◆ getValue()
const SVFValue* SVF::SVFStmt::getValue |
( |
| ) |
const |
|
inline |
◆ isPTAEdge()
bool SVFStmt::isPTAEdge |
( |
| ) |
const |
Whether src and dst nodes are both of pointer type.
Whether src and dst nodes are both pointer type
Definition at line 61 of file SVFStatements.cpp.
NodeType * getSrcNode() const
NodeType * getDstNode() const
◆ makeEdgeFlagWithAddionalOpnd()
Compute the unique edgeFlag value from edge kind and second variable operand for MultiOpndStmt.
Definition at line 171 of file SVFStatements.h.
175 if (it_inserted.second)
177 u64_t label = it_inserted.first->second;
static constexpr unsigned char EdgeKindMaskBits
We use the lower 8 bits to denote edge kind.
static Var2LabelMap var2LabelMap
Second operand of MultiOpndStmt to label map.
static u64_t multiOpndLabelCounter
MultiOpndStmt counter.
◆ makeEdgeFlagWithCallInst()
Compute the unique edgeFlag value from edge kind and call site Instruction.
Definition at line 183 of file SVFStatements.h.
187 if (it_inserted.second)
189 u64_t label = it_inserted.first->second;
static u64_t callEdgeLabelCounter
Call site Instruction counter.
static Inst2LabelMap inst2LabelMap
Call site Instruction to label map.
◆ makeEdgeFlagWithStoreInst()
Compute the unique edgeFlag value from edge kind and store Instruction. Two store instructions may share the same StorePAGEdge
Definition at line 195 of file SVFStatements.h.
199 if (it_inserted.second)
201 u64_t label = it_inserted.first->second;
static u64_t storeEdgeLabelCounter
Store Instruction counter.
◆ setBB()
◆ setICFGNode()
void SVF::SVFStmt::setICFGNode |
( |
ICFGNode * |
node | ) |
|
|
inline |
◆ setValue()
void SVF::SVFStmt::setValue |
( |
const SVFValue * |
val | ) |
|
|
inline |
◆ toString()
Reimplemented in SVF::BranchStmt, SVF::UnaryOPStmt, SVF::BinaryOPStmt, SVF::CmpStmt, SVF::SelectStmt, SVF::PhiStmt, SVF::RetPE, SVF::CallPE, SVF::LoadStmt, SVF::StoreStmt, SVF::CopyStmt, SVF::AddrStmt, SVF::AssignStmt, SVF::TDJoinPE, SVF::TDForkPE, and SVF::GepStmt.
Definition at line 66 of file SVFStatements.cpp.
69 std::stringstream rawstr(str);
70 rawstr <<
"SVFStmt: [Var" <<
getDstID() <<
" <-- Var" <<
getSrcID() <<
"]\t";
NodeID getSrcID() const
get methods of the components
◆ operator<<
Overloading operator << for dumping SVFVar value.
Definition at line 210 of file SVFStatements.h.
212 o << edge.toString();
◆ SVFIRReader
◆ SVFIRWriter
◆ basicBlock
◆ callEdgeLabelCounter
u64_t SVFStmt::callEdgeLabelCounter = 0 |
|
staticprivate |
◆ edgeId
◆ icfgNode
◆ inst2LabelMap
◆ multiOpndLabelCounter
u64_t SVFStmt::multiOpndLabelCounter = 0 |
|
staticprivate |
◆ storeEdgeLabelCounter
u64_t SVFStmt::storeEdgeLabelCounter = 0 |
|
staticprivate |
◆ totalEdgeNum
u32_t SVF::SVFStmt::totalEdgeNum |
|
static |
◆ value
◆ var2LabelMap
The documentation for this class was generated from the following files: