79 std::stringstream rawstr(str);
80 rawstr <<
"SVFStmt: [Var" <<
getDstID() <<
" <-- Var" <<
getSrcID() <<
"]\t";
87 std::stringstream rawstr(str);
100 std::stringstream rawstr(str);
113 std::stringstream rawstr(str);
114 rawstr <<
"PhiStmt: [Var" <<
getResID() <<
" <-- (";
129 std::stringstream rawstr(str);
132 rawstr << op->getId() <<
",";
145 std::stringstream rawstr(str);
158 std::stringstream rawstr(str);
171 std::stringstream rawstr(str);
184 std::stringstream rawstr(str);
188 rawstr <<
"BranchStmt: [" <<
" Unconditional branch" <<
"]\n";
205 std::stringstream rawstr(str);
218 std::stringstream rawstr(str);
231 std::stringstream rawstr(str);
244 std::stringstream rawstr(str);
245 rawstr <<
"CallPE: [Var" <<
getResID() <<
" <-- (";
264 std::stringstream rawstr(str);
277 std::stringstream rawstr(str);
278 rawstr <<
"TDForkPE: [Var" <<
getResID() <<
" <-- (";
297 std::stringstream rawstr(str);
511 assert(opnds.size() == icfgNodes.size() &&
512 "Numbers of operands and their CallICFGNodes are not consistent?");
533 assert(opnds.size() == 2 &&
"CmpStmt can only have two operands!");
541 assert(opnds.size() == 2 &&
"SelectStmt can only have two operands!");
550 assert(opnds.size() == 2 &&
"BinaryOPStmt can only have two operands!");
const ObjVar * getSrcNode() const
const ObjVar * getRHSVar() const
const ValVar * getLHSVar() const
const ValVar * getDstNode() const
virtual const std::string toString() const override
NodeID getRHSVarID() const
NodeID getLHSVarID() const
virtual const std::string toString() const override
BinaryOPStmt(const BinaryOPStmt &)
place holder
u32_t getNumSuccessors() const
bool isUnconditional() const
The branch is unconditional if cond is a null value.
const ICFGNode * getSuccessor(u32_t i) const
const ValVar * getCondition() const
Return the condition.
SuccAndCondPairVec successors
BranchStmt(const BranchStmt &)
place holder
bool isConditional() const
The branch is conditional if cond is not a null value.
std::vector< std::pair< const ICFGNode *, s64_t > > SuccAndCondPairVec
virtual const std::string toString() const override
CallPE(const CallPE &)
place holder
CallICFGNodeVec opCallICFGNodes
const FunEntryICFGNode * entry
each operand's call site
virtual const std::string toString() const override
const CallICFGNode * getOpCallICFGNode(u32_t op_idx) const
Return the CallICFGNode of the i-th operand.
std::vector< const CallICFGNode * > CallICFGNodeVec
virtual const std::string toString() const override
u32_t getPredicate() const
CmpStmt(const CmpStmt &)
place holder
const ValVar * getRHSVar() const
const ValVar * getDstNode() const
const ValVar * getSrcNode() const
const ValVar * getLHSVar() const
virtual const std::string toString() const override
NodeType * getSrcNode() const
NodeType * getDstNode() const
u32_t getTotalEdgeNum() const
const ValVar * getSrcNode() const
const ValVar * getRHSVar() const
const ValVar * getDstNode() const
const ValVar * getLHSVar() const
virtual const std::string toString() const
NodeID nullPtrSymID() const
const ValVar * getLHSVar() const
const ValVar * getDstNode() const
virtual const std::string toString() const override
const ValVar * getRHSVar() const
const ValVar * getSrcNode() const
const OPVars & getOpndVars() const
const ValVar * getRes() const
Result SVFVar.
std::vector< ValVar * > OPVars
NodeID getOpVarID(u32_t pos) const
MultiOpndStmt()
place holder
const ValVar * getOpVar(u32_t pos) const
Operand SVFVars.
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
const FunExitICFGNode * exit
the callsite statement returning to
const ValVar * getDstNode() const
const CallICFGNode * call
const ValVar * getSrcNode() const
const ValVar * getRHSVar() const
const ValVar * getLHSVar() const
static SVFIR * getPAG(bool buildFromFile=false)
Singleton design here to make sure we only have one instance during any analysis.
virtual bool isPTAEdge() const
Whether src and dst nodes are both of pointer type.
const SVFVar * getValue() const
static u64_t callEdgeLabelCounter
Call site Instruction counter.
static Var2LabelMap var2LabelMap
Second operand of MultiOpndStmt to label map.
static GEdgeFlag makeEdgeFlagWithAddionalOpnd(GEdgeKind k, const SVFVar *var)
static GEdgeFlag makeEdgeFlagWithCallInst(GEdgeKind k, const ICFGNode *cs)
SVFStmt(GEdgeFlag k)
Private constructor for reading SVFIR from file without side-effect.
ICFGNode * icfgNode
ICFGNode.
static u64_t storeEdgeLabelCounter
Store Instruction counter.
Map< const ICFGNode *, u32_t > Inst2LabelMap
const SVFBasicBlock * basicBlock
LLVM BasicBlock.
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
static GEdgeFlag makeEdgeFlagWithStoreInst(GEdgeKind k, const ICFGNode *store)
const SVFVar * value
LLVM value.
NodeID getId() const
Get ID.
virtual bool isPointer() const
Check if this variable represents a pointer.
virtual const std::string toString() const
Get string representation.
const SVFVar * getCondition() const
virtual const std::string toString() const override
SelectStmt(const SelectStmt &)
place holder
const ValVar * getDstNode() const
StoreStmt(const StoreStmt &)
place holder
const ValVar * getRHSVar() const
const ValVar * getLHSVar() const
virtual const std::string toString() const override
const ValVar * getSrcNode() const
virtual const std::string toString() const
const ValVar * getRHSVar() const
const ValVar * getLHSVar() const
const ValVar * getDstNode() const
virtual const std::string toString() const
const ValVar * getSrcNode() const
virtual const std::string toString() const override
const ValVar * getRes() const
const ValVar * getOpVar() const
NodeID getOpVarID() const
UnaryOPStmt(const UnaryOPStmt &)
place holder
std::enable_if_t<!is_simple_type< Y >::value, typename cast_retty< X, const Y >::ret_type > cast(const Y &Val)
LLVM_NODISCARD bool isa(const Y &Val)
GenericEdge< SVFVar > GenericPAGEdgeTy