42template<
class GraphType>
50 typedef typename GTraits::EdgeType
GEDGE;
100 while (!nodeStack.empty())
179 return GTraits::getNode(
_graph,
id);
185 return GTraits::getNodeID(node);
bool push(const Data &data)
bool find(const Data &data) const
NodeID Node_Index(GNODE node)
Get node ID.
bool isInWorklist(NodeID id)
SCCDetection< GraphType > SCC
WorkList worklist
Worklist for resolution.
std::unique_ptr< SCC > scc
SCC.
NodeID popFromWorklist()
Worklist operations.
GNODE * Node(NodeID id)
Get node on the graph.
SCC * getSCCDetector() const
Get SCC detector.
virtual NodeID sccRepNode(NodeID id) const
virtual void pushIntoWorklist(NodeID id)
GTraits::ChildIteratorType child_iterator
virtual void propagate(GNODE *v)
FIFOWorkList< NodeID > WorkList
SVF::GenericGraphTraits< GraphType > GTraits
Define the GTraits and node iterator for printing.
virtual NodeStack & SCCDetect(NodeSet &candidates)
virtual void initWorklist()
virtual void collapseFields()
collapse positive weight cycles of a graph
virtual bool propFromSrcToDst(GEDGE *)
Propagate information from source to destination node, to be implemented in the child class.
virtual ~WPASolver()=default
Destructor.
void setGraph(GraphType g)
virtual NodeStack & SCCDetect()
SCC detection.
u32_t iterationForPrintStat
print out statistics for i-th iteration
u32_t numOfIteration
num of iterations during constraint solving
virtual void processNode(NodeID)
Following methods are to be implemented in child class, in order to achieve a fully worked PTA.
const GraphType graph()
Get/Set graph methods.
bool reanalyze
Reanalyze if any constraint value changed.
virtual void solveWorklist()
std::stack< NodeID > NodeStack
llvm::IRBuilder IRBuilder
typename GraphType::UnknownGraphTypeError NodeRef