35using namespace SVFUtil;
55 while (!nodeStack.empty())
static double timeOfSCCMerges
static u32_t numOfSCCDetection
static double timeOfUpdateCallGraph
virtual void connectCaller2CalleeParams(const CallICFGNode *cs, const SVFFunction *F, NodePairSet &cpySrcNodes)
Connect formal and actual parameters for indirect callsites.
static u32_t numOfProcessedAddr
Statistics.
static double timeOfSCCDetection
static double timeOfProcessLoadStore
static double timeOfProcessCopyGep
ConstraintGraph * consCG
Constraint Graph.
NodeID sccRepNode(NodeID id) const override
SCC methods.
virtual bool addCopyEdge(NodeID src, NodeID dst)
static AndersenSCD * scdAndersen
virtual bool updateCallGraph(const CallSiteToFunPtrMap &callsites)
virtual void processAddr(const AddrCGEdge *addr)
virtual NodeStack & SCCDetect()
virtual void handleLoadStore(ConstraintNode *node)
virtual void solveWorklist()
virtual void handleCopyGep(ConstraintNode *node)
virtual void processPWC(ConstraintNode *rep)
void addSccCandidate(NodeID nodeId)
void setDetectPWC(bool flag)
virtual void computeDiffPts(NodeID id)
Handle diff points-to set.
virtual bool addCopyEdge(NodeID src, NodeID dst)
Add copy edge on constraint graph.
virtual const PointsTo & getDiffPts(NodeID id)
virtual bool processGep(NodeID node, const GepCGEdge *edge)
virtual void handleCopyGep(ConstraintNode *node)
virtual bool processLoad(NodeID node, const ConstraintEdge *load)
virtual const PointsTo & getPts(NodeID id)
Operation of points-to set.
void collapseFields()
collapse positive weight cycles of a graph
virtual bool processStore(NodeID node, const ConstraintEdge *load)
virtual bool processCopy(NodeID node, const ConstraintEdge *edge)
virtual void collapsePWCNode(NodeID nodeId)
Collapse a field object into its base for field insensitive analysis.
virtual void onTheFlyCallGraphSolve(const CallSiteToFunPtrMap &callsites, CallEdgeMap &newEdges)
On the fly call graph construction.
virtual bool addPts(NodeID id, NodeID ptd)
ConstraintNode * getConstraintNode(NodeID id) const
Get/add/remove constraint node.
const_iterator outgoingLoadsEnd() const
const ConstraintEdge::ConstraintEdgeSetTy & getGepOutEdges() const
const_iterator incomingStoresBegin() const
const_iterator incomingStoresEnd() const
ConstraintEdge::ConstraintEdgeSetTy::const_iterator const_iterator
const ConstraintEdge::ConstraintEdgeSetTy & getCopyOutEdges() const
const_iterator outgoingLoadsBegin() const
bool push(const Data &data)
static Option< bool > DetectPWC
OrderedMap< const CallICFGNode *, FunctionSet > CallEdgeMap
PTAStat * stat
Statistics.
SVFIR::CallSiteToFunPtrMap CallSiteToFunPtrMap
const_iterator end() const
const_iterator begin() const
NodeID getId() const
Get ID.
static double getClk(bool mark=false)
bool isInWorklist(NodeID id)
NodeID popFromWorklist()
Worklist operations.
SCC * getSCCDetector() const
Get SCC detector.
virtual void pushIntoWorklist(NodeID id)
bool reanalyze
Reanalyze if any constraint value changed.
std::stack< NodeID > NodeStack
llvm::IRBuilder IRBuilder
Set< NodePair > NodePairSet