8#ifndef INCLUDE_WPA_STEENSGAARD_H_
9#define INCLUDE_WPA_STEENSGAARD_H_
94 NodeToEquivClassMap::const_iterator
it =
nodeToECMap.find(
id);
virtual void analyze() override
Andersen analysis.
ConstraintGraph * consCG
Constraint Graph.
PTDataTy * getPTDataTy() const
Get points-to data structure.
CopyCGEdge * addCopyCGEdge(NodeID src, NodeID dst)
Add Copy edge.
@ Steensgaard_WPA
Steensgaard PTA.
PTATY getAnalysisTy() const
Type of pointer analysis.
static Steensgaard * steens
NodeToEquivClassMap nodeToECMap
void ecUnion(NodeID id, NodeID ec)
merge node into equiv class and merge node's pts into ec's pts
virtual bool addCopyEdge(NodeID src, NodeID dst) override
Add copy edge on constraint graph.
static void releaseSteensgaard()
Map< NodeID, Set< NodeID > > NodeToSubsMap
static Steensgaard * createSteensgaard(SVFIR *_pag)
Create an singleton instance.
static bool classof(const PointerAnalysis *pta)
static bool classof(const Steensgaard *)
Methods for support type inquiry through isa, cast, and dyn_cast:
Map< NodeID, NodeID > NodeToEquivClassMap
virtual const PointsTo & getPts(NodeID id) override
Operation of points-to set.
Set< NodeID > & getSubNodes(NodeID id)
void setEC(NodeID node, NodeID rep)
virtual void solveWorklist() override
virtual bool unionPts(NodeID id, const PointsTo &target) override
pts(id) = pts(id) U target
void addSubNode(NodeID node, NodeID sub)
Steensgaard(SVFIR *_pag)
Constructor.
NodeToSubsMap nodeToSubsMap
static bool classof(const AndersenBase *pta)
virtual bool unionPts(NodeID id, NodeID ptd) override
pts(id) = pts(id) U pts(ptd)
NodeID getEC(NodeID id) const
NodeID sccRepNode(NodeID id) const override
Return getEC(id)
llvm::IRBuilder IRBuilder
WPASolver< ConstraintGraph * > WPAConstraintSolver