54 return fun->isUncalledFunction();
76 std::stringstream rawstr(str);
77 rawstr <<
"SVFVar ID: " <<
getId();
91 assert(node &&
"GlobalValVar must have a valid ICFGNode");
95 assert(node &&
"GepValVar must have a valid ICFGNode");
113 assert(node &&
"Base ValVar must have a valid ICFGNode");
117 assert(
false &&
"Unknown ValVar subclass -- update this check");
131 std::stringstream rawstr(str);
132 rawstr <<
"ValVar ID: " <<
getId();
144 std::stringstream rawstr(str);
145 rawstr <<
"ObjVar ID: " <<
getId();
160 "ArgValVar of a defined function must have a valid ICFGNode");
180 return cgNode->getArg(
argNo)->getType()->isPointerTy();
186 std::stringstream rawstr(str);
187 rawstr <<
"ArgValVar ID: " <<
getId();
205 std::stringstream rawstr(str);
219 "RetValPN of a defined function must have a valid ICFGNode");
241 std::stringstream rawstr(str);
242 rawstr <<
"GepObjVar ID: " <<
getId() <<
" with offset_" + std::to_string(
apOffset);
271 std::stringstream rawstr(str);
272 rawstr <<
"BaseObjVar ID: " <<
getId() <<
" (base object)";
285 std::stringstream rawstr(str);
286 rawstr <<
"HeapObjVar ID: " <<
getId();
298 std::stringstream rawstr(str);
299 rawstr <<
"StackObjVar ID: " <<
getId();
318 std::stringstream rawstr(str);
319 rawstr <<
"FunValVar ID: " <<
getId();
323 rawstr <<
funObjVar->getFunction()->getName();
331 std::stringstream rawstr(str);
332 rawstr <<
"ConstDataValVar ID: " <<
getId();
344 std::stringstream rawstr(str);
345 rawstr <<
"GlobalValVar ID: " <<
getId();
357 std::stringstream rawstr(str);
358 rawstr <<
"ConstFPValVar ID: " <<
getId();
370 std::stringstream rawstr(str);
371 rawstr <<
"ConstIntValVar ID: " <<
getId();
383 std::stringstream rawstr(str);
384 rawstr <<
"ConstNullPtrValVar ID: " <<
getId();
396 std::stringstream rawstr(str);
397 rawstr <<
"GlobalObjVar ID: " <<
getId();
408 std::stringstream rawstr(str);
409 rawstr <<
"ConstDataObjVar ID: " <<
getId();
421 std::stringstream rawstr(str);
422 rawstr <<
"ConstFPObjVar ID: " <<
getId();
434 std::stringstream rawstr(str);
435 rawstr <<
"ConstIntObjVar ID: " <<
getId();
447 std::stringstream rawstr(str);
448 rawstr <<
"ConstNullPtrObjVar ID: " <<
getId();
464 const std::vector<const ArgValVar *> &allarg,
const SVFBasicBlock *exit)
494 std::stringstream rawstr(str);
495 rawstr <<
"FunObjVar ID: " <<
getId() <<
" (base object)";
507 std::stringstream rawstr(str);
508 rawstr <<
"RetValPN ID: " <<
getId() <<
" unique return node for function " <<
callGraphNode->getName();
525 std::stringstream rawstr(str);
526 rawstr <<
"VarArgValPN ID: " <<
getId() <<
" Var arg node for function " <<
callGraphNode->getName();
533 std::stringstream rawstr(str);
534 rawstr <<
"DummyValVar ID: " <<
getId();
541 std::stringstream rawstr(str);
542 rawstr <<
"IntrinsicValVar ID: " <<
getId();
549 std::stringstream rawstr(str);
550 rawstr <<
"AsmPCValVar ID: " <<
getId();
557 std::stringstream rawstr(str);
558 rawstr <<
"DummyObjVar ID: " <<
getId();
bool isArgOfUncalledFunction() const
ArgValVar(NodeID i, u32_t argNo, const ICFGNode *icn, const FunObjVar *callGraphNode, const SVFType *svfType)
Constructor.
virtual const FunObjVar * getFunction() const
Get containing function, or null for globals/constants.
virtual bool isPointer() const
Check if this variable represents a pointer.
const FunObjVar * getParent() const
virtual const std::string toString() const
Get string representation.
virtual const std::string toString() const
Get string representation.
const ICFGNode * icfgNode
BaseObjVar(NodeID i, ObjTypeInfo *ti, const ICFGNode *node, PNODEK ty=BaseObjNode)
Constructor.
virtual const std::string toString() const
Get string representation.
NodeID getId() const
Get the memory object id.
bool isBlackHoleObj() const
Whether it is a black hole object.
virtual const FunObjVar * getFunction() const
Get containing function, or null for globals/constants.
virtual const std::string toString() const
Get string representation.
virtual const std::string toString() const
Get string representation.
virtual const std::string toString() const
Get string representation.
virtual const std::string toString() const
Get string representation.
virtual const std::string toString() const
Get string representation.
virtual const std::string toString() const
Get string representation.
virtual const std::string toString() const
Get string representation.
virtual const std::string toString() const
Get string representation.
virtual const std::string toString() const
Get string representation.
virtual const std::string toString() const
Get string representation.
virtual const std::string toString() const
Get string representation.
virtual const FunObjVar * getFunction() const
Get containing function, or null for globals/constants.
virtual bool isIsolatedNode() const
Check if this node is isolated (no edges) in the SVFIR graph.
bool isAddrTaken
return true if this function is an intrinsic function (e.g., llvm.dbg), which does not reside in the ...
bool isNotRet
return true if this function is never called
SVFLoopAndDomInfo * loopAndDom
FunctionType, which is different from the type (PointerType) of this SVF Function.
const SVFType * getReturnType() const
Returns the FunctionType.
std::vector< const ArgValVar * > allArgs
the basic block graph of this function
bool supVarArg
return true if this function never returns
const SVFBasicBlock * exitBlock
all formal arguments of this function
bool isUncalledFunction() const
const SVFFunctionType * funcType
return true if this function supports variable arguments
bool intrinsic
return true if this function does not have a body
const FunObjVar * realDefFun
the loop and dominate information
bool isUncalled
return true if this function is address-taken (for indirect call purposes)
FunObjVar(NodeID i, ObjTypeInfo *ti, const ICFGNode *node)
Constructor.
void initFunObjVar(bool decl, bool intrinc, bool addr, bool uncalled, bool notret, bool vararg, const SVFFunctionType *ft, SVFLoopAndDomInfo *ld, const FunObjVar *real, BasicBlockGraph *bbg, const std::vector< const ArgValVar * > &allarg, const SVFBasicBlock *exit)
BasicBlockGraph * bbGraph
the definition of a function across multiple modules
bool isDeclaration() const
virtual const std::string toString() const
Get string representation.
const FunObjVar * funObjVar
FunValVar(NodeID i, const ICFGNode *icn, const FunObjVar *cgn, const SVFType *svfType)
Constructor.
const GEdgeSetTy & getOutEdges() const
const GEdgeSetTy & getInEdges() const
const BaseObjVar * getBaseObj() const
virtual const std::string toString() const
Get string representation.
virtual const SVFType * getType() const
Return the type of this gep object.
const ValVar * getBaseNode(void) const
Return the base object from which this GEP node came from.
const SVFType * gepValType
GepValVar(const ValVar *baseNode, NodeID i, const AccessPath &ap, const SVFType *ty, const ICFGNode *node)
Constructor.
virtual const std::string toString() const
Get string representation.
APOffset getConstantFieldIdx() const
offset of the base value variable
virtual const std::string toString() const
Get string representation.
virtual const std::string toString() const
Get string representation.
virtual const std::string toString() const
Get string representation.
const SVFType * getFlatternedElemType(const SVFType *baseType, u32_t flatten_idx)
Return the type of a flattened element given a flattened index.
static bool isBlkObj(NodeID id)
virtual const std::string toString() const
Get string representation.
virtual const std::string toString() const
Get string representation.
static const Option< bool > ShowSVFIRValue
const FunObjVar * callGraphNode
RetValPN(NodeID i, const FunObjVar *node, const SVFType *svfType, const ICFGNode *icn)
Constructor.
virtual bool isPointer() const
Check if this variable represents a pointer.
const std::string getValueName() const
Return name of a LLVM value.
virtual const std::string toString() const
Get string representation.
virtual const FunObjVar * getFunction() const
Get containing function, or null for globals/constants.
static SVFIR * getPAG(bool buildFromFile=false)
Singleton design here to make sure we only have one instance during any analysis.
NodeID getId() const
Get ID.
virtual const std::string & getName() const
const std::string valueOnlyToString() const
const SVFType * type
SVF type.
SVFVar(NodeID i, const SVFType *svfType, PNODEK k)
Standard constructor with ID, type and kind.
virtual bool isConstDataOrAggDataButNotNullPtr() const
Check if this variable represents constant data/metadata but not null pointer.
virtual bool ptrInUncalledFunction() const
Check if this pointer is in an uncalled function.
virtual const FunObjVar * getFunction() const
Get containing function, or null for globals/constants.
void dump() const
Debug dump to console.
virtual bool isIsolatedNode() const
Check if this node is isolated (no edges) in the SVFIR graph.
virtual const std::string toString() const
Get string representation.
virtual const std::string toString() const
Get string representation.
virtual const std::string toString() const
Get string representation.
virtual const FunObjVar * getFunction() const
Get containing function, or null for globals/constants.
ValVar(NodeID i, const SVFType *svfType, const ICFGNode *node, PNODEK ty=ValNode)
Constructor.
const ICFGNode * icfgNode
virtual const std::string toString() const
Get string representation.
const FunObjVar * callGraphNode
const std::string getValueName() const
Return name of a LLVM value.
virtual const FunObjVar * getFunction() const
Get containing function, or null for globals/constants.
LLVM_NODISCARD bool isa(const Y &Val)
std::ostream & outs()
Overwrite llvm::outs().
GenericNode< SVFVar, SVFStmt > GenericPAGNodeTy