32using namespace SVFUtil;
#define DBOUT(TYPE, X)
LLVM debug macros, define type of your DBUG model of each pass.
virtual void finalize()
Print grammar and graph.
virtual bool addCopyEdge(NodeID src, NodeID dst)
Need Original one for virtual table.
virtual void onTheFlyCallGraphSolve(const CallSiteToFunPtrMap &callsites, CallEdgeMap &newEdges)
On the fly call graph construction.
virtual void initializeSolver()
Initialize Solver.
void connectCaller2CalleeParams(const CallICFGNode *cs, const SVFFunction *F)
Connect formal and actual parameters for indirect callsites.
void heapAllocatorViaIndCall(const CallICFGNode *cs)
virtual void solve()
Solving CFL Reachability.
virtual const PointsTo & getCFLPts(NodeID ptr)
Get points-to targets of a pointer. V In this context.
virtual bool updateCallGraph(const CallSiteToFunPtrMap &callsites)
Update call graph for the input indirect callsites.
CallSite2DummyValPN callsite2DummyValPN
Map an instruction to a dummy obj which created at an indirect callsite, which invokes a heap allocat...
virtual void initialize()
Initialize the grammar, graph, solver.
virtual void buildCFLGraph()
Build CFLGraph based on Option.
virtual void normalizeCFLGrammar()
Normalize grammar.
static double numOfChecks
virtual void checkParameter()
Parameter Checking.
virtual void buildCFLGrammar()
Build Grammar from text file.
static double timeOfSolving
static double numOfIteration
virtual void addCFLNode(NodeID id, CFLNode *node)
void dump(const std::string &filename)
virtual void solve()
Start solving.
static double numOfChecks
virtual bool isWorklistEmpty()
const std::string toString() const override
const SVFVar * getVtablePtr() const
const RetICFGNode * getRetICFGNode() const
Return callsite.
const std::string getSourceLoc() const override
const SVFFunction * getCalledFunction() const
bool isVirtualCall() const
void dump(std::string name)
Dump SVFIR.
NodeID getVarargNode(const SVFFunction *func) const
getVarargNode - Return the unique node representing the variadic argument of a variadic function.
static const Option< std::string > CFLGraph
static const Option< bool > PrintCFL
virtual void initializeSolver()
Initialize POCR Solver.
Solver Utilize Hybrid Representation of Graph.
virtual void initializeSolver()
Initialize POCRHybrid Solver.
virtual void finalize()
Finalization of a pointer analysis, including checking alias correctness.
OrderedMap< const CallICFGNode *, FunctionSet > CallEdgeMap
PTAStat * stat
Statistics.
virtual void resolveIndCalls(const CallICFGNode *cs, const PointsTo &target, CallEdgeMap &newEdges)
Resolve indirect call edges.
virtual void resolveCPPIndCalls(const CallICFGNode *cs, const PointsTo &target, CallEdgeMap &newEdges)
Resolve cpp indirect call edges.
SVFIR::CallSiteToFunPtrMap CallSiteToFunPtrMap
virtual const SVFType * getType() const
NodeID getId() const
Get ID.
std::vector< const SVFVar * > SVFVarList
const SVFVarList & getFunArgsList(const SVFFunction *func) const
Get function arguments list.
const SVFVar * getFunRet(const SVFFunction *func) const
Get function return list.
bool hasCallSiteArgsMap(const CallICFGNode *cs) const
Callsite has argument list.
const CallSiteToFunPtrMap & getIndirectCallsites() const
Add/get indirect callsites.
bool callsiteHasRet(const RetICFGNode *cs) const
bool hasFunArgsList(const SVFFunction *func) const
Function has arguments list.
const SVFVarList & getCallSiteArgsList(const CallICFGNode *cs) const
Get callsite argument list.
const SVFVar * getCallSiteRet(const RetICFGNode *cs) const
Get callsite return.
NodeID addDummyObjNode(const SVFType *type)
bool funHasRet(const SVFFunction *func) const
static double getClk(bool mark=false)
bool isHeapAllocExtFunViaRet(const SVFFunction *fun)
Return true if the call is a heap allocator/reallocator.
void writeWrnMsg(const std::string &msg)
Writes a message run through wrnMsg.
std::ostream & outs()
Overwrite llvm::outs()
llvm::IRBuilder IRBuilder