45 &&
"PTAStat: unknown clock type!");
56 return (
double)(time.tv_nsec + time.tv_sec * 1000000000) / 1000000.0;
63 assert(
false &&
"PTAStat::getClk: unknown clock type");
89 SVFUtil::outs() <<
"----------------Time and memory stats--------------------\n";
97 SVFUtil::outs() <<
"----------------Numbers stats----------------------------\n";
103 SVFUtil::outs() <<
"#######################################################" << std::endl;
134 if(
ObjVar*
obj = SVFUtil::dyn_cast<ObjVar>(node))
146 SVFUtil::isa<StackObjVar>(
150 SVFUtil::isa<HeapObjVar, DummyObjVar>(
iterator begin()
Iterators.
IDToNodeMapTy::iterator iterator
Node Iterators.
u32_t getValueNodeNum() const
u32_t getPTAPAGEdgeNum() const
u32_t getPAGEdgeNum() const
u32_t getObjectNodeNum() const
bool isConstantStruct() const
const SVFType * getType() const
Get obj type.
bool isConstDataOrConstGlobal() const
SymID getId() const
Get the memory object id.
bool isFieldInsensitive() const
Return true if its field limit is 0.
bool isBlackHoleObj() const
Whether it is a black hole object.
bool isConstantArray() const
bool isFunction() const
object attributes methods
static const OptionMap< enum PTAStat::ClockType > ClockType
static const Option< bool > MarkedClocksOnly
u32_t getNumSuccessors() const
const_iterator end() const
const_iterator begin() const
std::vector< constSVFBasicBlock * >::const_iterator const_iterator
const CallSiteSet & getCallSiteSet() const
Get all callsites.
SVFStmt::SVFStmtSetTy & getSVFStmtSet(SVFStmt::PEDGEK kind)
Get/set methods to get SVFStmts based on their kinds and ICFGNodes.
CallGraph * getCallGraph()
u32_t getFieldObjNodeNum() const
const BaseObjVar * getBaseObject(NodeID id) const
u32_t getFieldValNodeNum() const
Node and edge statistics.
const CallSiteToFunPtrMap & getIndirectCallsites() const
Add/get indirect callsites.
static SVFIR * getPAG(bool buildFromFile=false)
Singleton design here to make sure we only have one instance during any analysis.
virtual void printStat(std::string str="")
static bool printGeneralStats
SVF's general statistics are only printed once even if you run multiple anayses.
virtual void performStat()=0
static double timeOfBuildingLLVMModule
static double getClk(bool mark=false)
static double timeOfBuildingSymbolTable
static double timeOfBuildingSVFIR
static SymbolTableInfo * SymbolInfo()
Singleton design here to make sure we only have one instance during any analysis.
u32_t getMaxStructSize() const
std::ostream & outs()
Overwrite llvm::outs()
std::vector< std::string > split(const std::string &s, char separator)
Split into two substrings around the first occurrence of a separator string.
llvm::IRBuilder IRBuilder