32using namespace SVFUtil;
#define DBOUT(TYPE, X)
LLVM debug macros, define type of your DBUG model of each pass.
void connectCaller2CalleeParams(const CallICFGNode *cs, const FunObjVar *F)
Connect formal and actual parameters for indirect callsites.
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 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 FunObjVar * getCalledFunction() const
const RetICFGNode * getRetICFGNode() const
Return callsite.
const std::string getSourceLoc() const override
bool isVirtualCall() const
void dump(std::string name)
Dump SVFIR.
NodeID getVarargNode(const FunObjVar *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
bool funHasRet(const FunObjVar *func) const
bool hasFunArgsList(const FunObjVar *func) const
Function has arguments list.
std::vector< const SVFVar * > SVFVarList
bool hasCallSiteArgsMap(const CallICFGNode *cs) const
Callsite has argument list.
const CallSiteToFunPtrMap & getIndirectCallsites() const
Add/get indirect callsites.
bool callsiteHasRet(const RetICFGNode *cs) const
const SVFVarList & getCallSiteArgsList(const CallICFGNode *cs) const
Get callsite argument list.
const SVFVar * getCallSiteRet(const RetICFGNode *cs) const
Get callsite return.
const SVFVarList & getFunArgsList(const FunObjVar *func) const
Get function arguments list.
const SVFVar * getFunRet(const FunObjVar *func) const
Get function return list.
NodeID addDummyObjNode(const SVFType *type)
static double getClk(bool mark=false)
NodeID getId() const
Get ID.
virtual const SVFType * getType() const
bool isHeapAllocExtFunViaRet(const FunObjVar *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