30 #ifndef PROJECT_ANDERSENSFR_H 31 #define PROJECT_ANDERSENSFR_H 62 if (scdAndersen ==
nullptr)
75 scdAndersen =
nullptr;
124 if (sfrAndersen ==
nullptr)
159 #endif //PROJECT_ANDERSENSFR_H
Map< NodeID, NodeSet > FieldReps
std::stack< NodeID > NodeStack
static AndersenSFR * sfrAndersen
static AndersenSCD * createAndersenSCD(PAG *_pag)
Create an singleton instance directly instead of invoking llvm pass manager.
virtual NodeStack & SCCDetect()
Map< NodeID, pair< NodeID, NodeSet > > SFRTrait
virtual void analyze() override
Andersen analysis.
std::unordered_map< Key, Value, Hash, KeyEqual, Allocator > Map
static void releaseAndersenSFR()
virtual void handleCopyGep(ConstraintNode *node)
virtual bool updateCallGraph(const CallSiteToFunPtrMap &callsites)
virtual void handleLoadStore(ConstraintNode *node)
virtual void initialize()
Initialize analysis.
Map< NodeID, NodeID > NodeToNodeMap
virtual void solveWorklist()
static AndersenSFR * createAndersenSFR(PAG *_pag)
Create an singleton instance directly instead of invoking llvm pass manager.
AndersenSCD(PAG *_pag, PTATY type=AndersenSCD_WPA)
PAG::CallSiteToFunPtrMap CallSiteToFunPtrMap
static void releaseAndersenSCD()
Stride-based field representation.
static AndersenSCD * scdAndersen
virtual bool processGepPts(const PointsTo &pts, const GepCGEdge *edge)
void addSccCandidate(NodeID nodeId)
virtual void processPWC(ConstraintNode *rep)
llvm::SparseBitVector NodeBS
AndersenSFR(PAG *_pag, PTATY type=AndersenSFR_WPA)
virtual bool mergeSrcToTgt(NodeID srcId, NodeID tgtId)
Map< NodeID, NodeBS > NodeStrides
PTATY
Pointer analysis type list.
Selective cycle detection andersen-style WPA.
virtual void processAddr(const AddrCGEdge *addr)
NodeID sccRepNode(NodeID id) const
SCC methods.
virtual bool addCopyEdge(NodeID src, NodeID dst)