30#ifndef PROJECT_ANDERSENSFR_H
31#define PROJECT_ANDERSENSFR_H
virtual void analyze() override
Andersen analysis.
NodeID sccRepNode(NodeID id) const override
SCC methods.
static AndersenSCD * createAndersenSCD(SVFIR *_pag)
Create an singleton instance directly instead of invoking llvm pass manager.
virtual bool addCopyEdge(NodeID src, NodeID dst)
static AndersenSCD * scdAndersen
virtual bool updateCallGraph(const CallSiteToFunPtrMap &callsites)
virtual void processAddr(const AddrCGEdge *addr)
AndersenSCD(SVFIR *_pag, PTATY type=AndersenSCD_WPA)
virtual NodeStack & SCCDetect()
virtual void handleLoadStore(ConstraintNode *node)
Map< NodeID, NodeID > NodeToNodeMap
virtual void solveWorklist()
virtual void handleCopyGep(ConstraintNode *node)
virtual void processPWC(ConstraintNode *rep)
static void releaseAndersenSCD()
void addSccCandidate(NodeID nodeId)
Map< NodeID, std::pair< NodeID, NodeSet > > SFRTrait
void initialize()
Initialize analysis.
static void releaseAndersenSFR()
Map< NodeID, NodeSet > FieldReps
AndersenSFR(SVFIR *_pag, PTATY type=AndersenSFR_WPA)
bool processGepPts(const PointsTo &pts, const GepCGEdge *edge)
void fieldExpand(NodeSet &initials, APOffset offset, NodeBS &strides, PointsTo &expandPts)
static AndersenSFR * sfrAndersen
bool mergeSrcToTgt(NodeID nodeId, NodeID newRepId)
Map< NodeID, NodeBS > NodeStrides
static AndersenSFR * createAndersenSFR(SVFIR *_pag)
Create an singleton instance directly instead of invoking llvm pass manager.
PTATY
Pointer analysis type list.
@ AndersenSCD_WPA
Selective cycle detection andersen-style WPA.
@ AndersenSFR_WPA
Stride-based field representation.
SVFIR::CallSiteToFunPtrMap CallSiteToFunPtrMap
std::stack< NodeID > NodeStack
llvm::IRBuilder IRBuilder