35using namespace SVFUtil;
178 rawstr <<
"BranchStmt: [" <<
" Unconditional branch" <<
"]\n";
307 return SVFUtil::isa<RetPN>(
getRes());
355 assert(
opnds.size() == 2 &&
"CmpStmt can only have two operands!");
363 assert(
opnds.size() == 2 &&
"SelectStmt can only have two operands!");
372 assert(
opnds.size() == 2 &&
"BinaryOPStmt can only have two operands!");
virtual const std::string toString() const override
NodeID getRHSVarID() const
NodeID getLHSVarID() const
virtual const std::string toString() const override
BinaryOPStmt()
Constructs empty BinaryOPStmt (for SVFIRReader/serialization)
u32_t getNumSuccessors() const
bool isUnconditional() const
The branch is unconditional if cond is a null value.
const ICFGNode * getSuccessor(u32_t i) const
bool isConditional() const
The branch is conditional if cond is not a null value.
const SVFVar * getCondition() const
Return the condition.
virtual const std::string toString() const override
CallPE(const CallPE &)
place holder
virtual const std::string toString() const override
virtual const std::string toString() const override
CmpStmt()
Constructs empty CmpStmt (for SVFIRReader/serialization)
u32_t getPredicate() const
virtual const std::string toString() const override
NodeType * getSrcNode() const
NodeType * getDstNode() const
NodeID getSrcID() const
get methods of the components
u32_t getTotalEdgeNum() const
virtual const std::string toString() const
virtual const std::string toString() const override
const OPVars & getOpndVars() const
const SVFVar * getRes() const
Result SVFVar.
NodeID getOpVarID(u32_t pos) const
MultiOpndStmt()
place holder
const SVFVar * getOpVar(u32_t pos) const
Operand SVFVars.
std::vector< SVFVar * > OPVars
u32_t getOpVarNum() const
static const Option< bool > ShowSVFIRValue
virtual const std::string toString() const override
const ICFGNode * getOpICFGNode(u32_t op_idx) const
Return the corresponding ICFGNode of this operand.
bool isFunctionRetPhi() const
RetPE(const RetPE &)
place holder
virtual const std::string toString() const override
NodeID getId() const
Get ID.
static SVFIR * getPAG(bool buildFromFile=false)
Singleton design here to make sure we only have one instance during any analysis.
bool isPTAEdge() const
Whether src and dst nodes are both of pointer type.
static u64_t callEdgeLabelCounter
Call site Instruction counter.
static Var2LabelMap var2LabelMap
Second operand of MultiOpndStmt to label map.
SVFStmt(GEdgeFlag k)
Private constructor for reading SVFIR from file without side-effect.
static u64_t storeEdgeLabelCounter
Store Instruction counter.
Map< const ICFGNode *, u32_t > Inst2LabelMap
const SVFValue * getValue() const
static u64_t multiOpndLabelCounter
MultiOpndStmt counter.
static Inst2LabelMap inst2LabelMap
Call site Instruction to label map.
virtual const std::string toString() const
Map< const SVFVar *, u32_t > Var2LabelMap
std::string toString() const
Needs to be implemented by a SVF front end.
const SVFVar * getCondition() const
virtual const std::string toString() const override
SelectStmt()
Constructs empty SelectStmt (for SVFIRReader/serialization)
virtual const std::string toString() const override
StoreStmt()
Constructs empty StoreStmt (for SVFIRReader/serialization)
static SymbolTableInfo * SymbolInfo()
Singleton design here to make sure we only have one instance during any analysis.
SymID nullPtrSymID() const
virtual const std::string toString() const
virtual const std::string toString() const
virtual const std::string toString() const override
const SVFVar * getOpVar() const
NodeID getOpVarID() const
const SVFVar * getRes() const
llvm::IRBuilder IRBuilder