37using namespace SVFUtil;
71 while (!nodeStack.empty())
static double timeOfProcessLoadStore
static double timeOfProcessCopyGep
ConstraintGraph * consCG
Constraint Graph.
NodeID sccRepNode(NodeID id) const override
SCC methods.
virtual void solveWorklist()
virtual void initialize()
virtual bool handleLoad(const PointsTo &objs, const ConstraintEdge *load)
virtual bool handleStore(const PointsTo &objs, const ConstraintEdge *store)
Map< NodeID, LoadStoreState > loadStoreStates
Per node, the objects and load/store endpoints already handled.
virtual void postProcessNode(NodeID nodeId)
static AndersenWaveDiff * diffWave
virtual void processNode(NodeID nodeId)
void setDetectPWC(bool flag)
virtual void initialize()
Initialize analysis.
virtual NodeStack & SCCDetect()
SCC detection.
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 void finalize()
Finalize analysis.
virtual void collapsePWCNode(NodeID nodeId)
Collapse a field object into its base for field insensitive analysis.
ConstraintNode * getConstraintNode(NodeID id) const
Get/add/remove constraint node.
const_iterator outgoingLoadsEnd() const
const ConstraintEdge::ConstraintEdgeSetTy & getStoreInEdges() const
const_iterator incomingStoresBegin() const
const_iterator incomingStoresEnd() const
ConstraintEdge::ConstraintEdgeSetTy::const_iterator const_iterator
const ConstraintEdge::ConstraintEdgeSetTy & getLoadOutEdges() const
const_iterator outgoingLoadsBegin() const
PTAStat * stat
Statistics.
bool test_and_set(u32_t n)
static double getClk(bool mark=false)
NodeID popFromWorklist()
Worklist operations.
bool reanalyze
Reanalyze if any constraint value changed.
std::stack< NodeID > NodeStack
llvm::IRBuilder IRBuilder