|
typedef SCCDetection< OfflineConsG * > | OSCC |
|
Public Types inherited from SVF::Andersen |
typedef SCCDetection< ConstraintGraph * > | CGSCC |
|
typedef OrderedMap< CallSite, NodeID > | CallSite2DummyValPN |
|
typedef llvm::GraphTraits< GraphType > | GTraits |
| Define the GTraits and node iterator for printing. More...
|
|
typedef GTraits::NodeRef | GNODE |
|
typedef GTraits::EdgeType | GEDGE |
|
typedef GTraits::ChildIteratorType | child_iterator |
|
typedef SCCDetection< GraphType > | SCC |
|
typedef FIFOWorkList< NodeID > | WorkList |
|
typedef PTData< NodeID, NodeBS, NodeID, PointsTo > | PTDataTy |
|
typedef MutablePTData< NodeID, NodeBS, NodeID, PointsTo > | MutPTDataTy |
|
typedef DiffPTData< NodeID, NodeBS, NodeID, PointsTo > | DiffPTDataTy |
|
typedef MutableDiffPTData< NodeID, NodeBS, NodeID, PointsTo > | MutDiffPTDataTy |
|
typedef DFPTData< NodeID, NodeBS, NodeID, PointsTo > | DFPTDataTy |
|
typedef MutableDFPTData< NodeID, NodeBS, NodeID, PointsTo > | MutDFPTDataTy |
|
typedef IncMutableDFPTData< NodeID, NodeBS, NodeID, PointsTo > | IncMutDFPTDataTy |
|
typedef VersionedPTData< NodeID, NodeBS, NodeID, PointsTo, VersionedVar, Set< VersionedVar > > | VersionedPTDataTy |
|
typedef MutableVersionedPTData< NodeID, NodeBS, NodeID, PointsTo, VersionedVar, Set< VersionedVar > > | MutVersionedPTDataTy |
|
enum | PTATY {
Andersen_BASE,
Andersen_WPA,
AndersenLCD_WPA,
AndersenHCD_WPA,
AndersenHLCD_WPA,
AndersenSCD_WPA,
AndersenSFR_WPA,
AndersenWaveDiff_WPA,
AndersenWaveDiffWithType_WPA,
Steensgaard_WPA,
CSCallString_WPA,
CSSummary_WPA,
FSDATAFLOW_WPA,
FSSPARSE_WPA,
FSTBHC_WPA,
VFS_WPA,
FSCS_WPA,
FSCSPS_WPA,
ADAPTFSCS_WPA,
ADAPTFSCSPS_WPA,
TypeCPP_WPA,
FieldS_DDA,
FlowS_DDA,
PathS_DDA,
Cxt_DDA,
Default_PTA
} |
| Pointer analysis type list. More...
|
|
enum | PTAImplTy { BaseImpl,
BVDataImpl,
CondImpl
} |
| Implementation type: BVDataPTAImpl or CondPTAImpl. More...
|
|
typedef llvm::AliasAnalysis | AliasAnalysis |
| Indirect call edges type, map a callsite to a set of callees. More...
|
|
typedef Set< const CallBlockNode * > | CallSiteSet |
|
typedef PAG::CallSiteToFunPtrMap | CallSiteToFunPtrMap |
|
typedef Set< const SVFFunction * > | FunctionSet |
|
typedef OrderedMap< const CallBlockNode *, FunctionSet > | CallEdgeMap |
|
typedef SCCDetection< PTACallGraph * > | CallGraphSCC |
|
typedef Set< const GlobalValue * > | VTableSet |
|
typedef Set< const SVFFunction * > | VFunSet |
|
|
| AndersenHCD (PAG *_pag, PTATY type=AndersenHCD_WPA) |
|
Public Member Functions inherited from SVF::Andersen |
| Andersen (PAG *_pag, PTATY type=Andersen_WPA, bool alias_check=true) |
| Constructor. More...
|
|
virtual | ~Andersen () |
| Destructor. More...
|
|
virtual void | finalize () |
| Finalize analysis. More...
|
|
void | resetData () |
| Reset data. More...
|
|
virtual const PointsTo & | getPts (NodeID id) |
| Operation of points-to set. More...
|
|
virtual bool | unionPts (NodeID id, const PointsTo &target) |
|
virtual bool | unionPts (NodeID id, NodeID ptd) |
|
void | dumpTopLevelPtsTo () |
|
void | setPWCOpt (bool flag) |
|
bool | mergePWC () const |
|
void | setDiffOpt (bool flag) |
|
bool | enableDiff () const |
|
NodeID | sccRepNode (NodeID id) const |
| SCC methods. More...
|
|
NodeBS & | sccSubNodes (NodeID repId) |
|
Public Member Functions inherited from SVF::AndersenBase |
| AndersenBase (PAG *_pag, PTATY type=Andersen_BASE, bool alias_check=true) |
| Constructor. More...
|
|
virtual | ~AndersenBase () |
| Destructor. More...
|
|
virtual void | analyze () override |
| Andersen analysis. More...
|
|
ConstraintGraph * | getConstraintGraph () |
| Get constraint graph. More...
|
|
void | printStat () |
| dump statistics More...
|
|
virtual void | normalizePointsTo () override |
|
void | cleanConsCG (NodeID id) |
| remove redundant gepnodes in constraint graph More...
|
|
| BVDataPTAImpl (PAG *pag, PointerAnalysis::PTATY type, bool alias_check=true) |
| Constructor. More...
|
|
virtual | ~BVDataPTAImpl () |
| Destructor. More...
|
|
void | destroy () |
| Release memory. More...
|
|
virtual void | clearPts (NodeID id, NodeID element) |
| Remove element from the points-to set of id. More...
|
|
virtual void | clearFullPts (NodeID id) |
| Clear points-to set of id. More...
|
|
virtual void | clearAllPts () |
| Clear all data. More...
|
|
virtual void | expandFIObjs (const PointsTo &pts, PointsTo &expandedPts) |
| Expand FI objects. More...
|
|
virtual AliasResult | alias (const MemoryLocation &LocA, const MemoryLocation &LocB) |
| Interface expose to users of our pointer analysis, given Location infos. More...
|
|
virtual AliasResult | alias (const Value *V1, const Value *V2) |
| Interface expose to users of our pointer analysis, given Value infos. More...
|
|
virtual AliasResult | alias (NodeID node1, NodeID node2) |
| Interface expose to users of our pointer analysis, given PAGNodeID. More...
|
|
virtual AliasResult | alias (const PointsTo &pts1, const PointsTo &pts2) |
| Interface expose to users of our pointer analysis, given two pts. More...
|
|
virtual const NodeBS & | getRevPts (NodeID nodeId) |
|
virtual bool | addPts (NodeID id, NodeID ptd) |
|
virtual void | writeToFile (const std::string &filename) |
| Interface for analysis result storage on filesystem. More...
|
|
virtual bool | readFromFile (const std::string &filename) |
|
virtual void | dumpCPts () |
| dump and debug, print out conditional pts More...
|
|
virtual void | dumpAllPts () |
|
Size_t | getNumOfResolvedIndCallEdge () const |
| Return number of resolved indirect call edges. More...
|
|
PTACallGraph * | getPTACallGraph () const |
| Return call graph. More...
|
|
CallGraphSCC * | getCallGraphSCC () const |
| Return call graph SCC. More...
|
|
| PointerAnalysis (PAG *pag, PTATY ty=Default_PTA, bool alias_check=true) |
| Constructor. More...
|
|
PTATY | getAnalysisTy () const |
| Type of pointer analysis. More...
|
|
PTAImplTy | getImplTy () const |
| Return implementation type of the pointer analysis. More...
|
|
PTAStat * | getStat () const |
| Get PTA stat. More...
|
|
SVFModule * | getModule () const |
| Module. More...
|
|
OrderedNodeSet & | getAllValidPtrs () |
| Get all Valid Pointers for resolution. More...
|
|
virtual | ~PointerAnalysis () |
| Destructor. More...
|
|
virtual void | computeDDAPts (NodeID) |
| Compute points-to results on-demand, overridden by derived classes. More...
|
|
virtual void | clearPts () |
| Clear points-to data. More...
|
|
void | printIndCSTargets (const CallBlockNode *cs, const FunctionSet &targets) |
| Print targets of a function pointer. More...
|
|
void | dumpStat () |
| Dump the statistics. More...
|
|
bool | printStat () |
| Whether print statistics. More...
|
|
void | disablePrintStat () |
| Whether print statistics. More...
|
|
virtual void | resolveIndCalls (const CallBlockNode *cs, const PointsTo &target, CallEdgeMap &newEdges, LLVMCallGraph *callgraph=nullptr) |
| Resolve indirect call edges. More...
|
|
bool | matchArgs (const CallBlockNode *cs, const SVFFunction *callee) |
| Match arguments for callsite at caller and callee. More...
|
|
CommonCHGraph * | getCHGraph () const |
| get CHGraph More...
|
|
void | getVFnsFromCHA (const CallBlockNode *cs, VFunSet &vfns) |
|
void | getVFnsFromPts (const CallBlockNode *cs, const PointsTo &target, VFunSet &vfns) |
|
void | connectVCallToVFns (const CallBlockNode *cs, const VFunSet &vfns, CallEdgeMap &newEdges) |
|
virtual void | resolveCPPIndCalls (const CallBlockNode *cs, const PointsTo &target, CallEdgeMap &newEdges) |
| Resolve cpp indirect call edges. More...
|
|
const TypeSystem * | getTypeSystem () const |
| get TypeSystem More...
|
|
PAG * | getPAG () const |
|
virtual void | dumpPts (NodeID ptr, const PointsTo &pts) |
|
void | printIndCSTargets () |
|
void | dumpAllTypes () |
|
bool | containBlackHoleNode (const PointsTo &pts) |
| Determine whether a points-to contains a black hole or constant node. More...
|
|
bool | containConstantNode (const PointsTo &pts) |
|
virtual bool | isBlkObjOrConstantObj (NodeID ptd) const |
|
bool | isNonPointerObj (NodeID ptd) const |
|
bool | isHeapMemObj (NodeID id) const |
| Whether this object is heap or array. More...
|
|
bool | isArrayMemObj (NodeID id) const |
|
bool | isFIObjNode (NodeID id) const |
|
NodeID | getBaseObjNode (NodeID id) |
|
NodeID | getFIObjNode (NodeID id) |
|
NodeID | getGepObjNode (NodeID id, const LocationSet &ls) |
|
virtual const NodeBS & | getAllFieldsObjNode (NodeID id) |
|
void | setObjFieldInsensitive (NodeID id) |
|
bool | isFieldInsensitive (NodeID id) const |
|
CallEdgeMap & | getIndCallMap () |
| Get callees from an indirect callsite. More...
|
|
bool | hasIndCSCallees (const CallBlockNode *cs) const |
|
const FunctionSet & | getIndCSCallees (const CallBlockNode *cs) const |
|
void | callGraphSCCDetection () |
| CallGraph SCC related methods. More...
|
|
NodeID | getCallGraphSCCRepNode (NodeID id) const |
| Get SCC rep node of a SVFG node. More...
|
|
bool | inSameCallGraphSCC (const SVFFunction *fun1, const SVFFunction *fun2) |
| Return TRUE if this edge is inside a CallGraph SCC, i.e., src node and dst node are in the same SCC on the SVFG. More...
|
|
bool | isInRecursion (const SVFFunction *fun) const |
|
bool | isLocalVarInRecursiveFun (NodeID id) const |
| Whether a local variable is in function recursions. More...
|
|
|
virtual void | initialize () |
|
virtual void | solveWorklist () |
|
virtual void | mergeSCC (NodeID nodeId) |
|
void | mergeNodeAndPts (NodeID node, NodeID tgt) |
|
|
bool | hasOfflineRep (NodeID nodeId) const |
|
NodeID | getOfflineRep (NodeID nodeId) |
|
|
bool | isaMergedNode (NodeID node) const |
|
void | setMergedNode (NodeID node) |
|
Protected Member Functions inherited from SVF::Andersen |
void | heapAllocatorViaIndCall (CallSite cs, NodePairSet &cpySrcNodes) |
|
virtual void | computeDiffPts (NodeID id) |
| Handle diff points-to set. More...
|
|
virtual const PointsTo & | getDiffPts (NodeID id) |
|
void | updatePropaPts (NodeID dstId, NodeID srcId) |
| Handle propagated points-to set. More...
|
|
void | clearPropaPts (NodeID src) |
|
virtual void | initWorklist () |
|
virtual void | setSCCEdgeFlag (ConstraintNode::SCCEdgeFlag f) |
|
virtual void | processNode (NodeID nodeId) |
| Override WPASolver function in order to use the default solver. More...
|
|
virtual bool | addCopyEdge (NodeID src, NodeID dst) |
| Add copy edge on constraint graph. More...
|
|
virtual bool | updateCallGraph (const CallSiteToFunPtrMap &callsites) |
| Update call graph for the input indirect callsites. More...
|
|
void | connectCaller2CalleeParams (CallSite cs, const SVFFunction *F, NodePairSet &cpySrcNodes) |
| Connect formal and actual parameters for indirect callsites. More...
|
|
virtual void | mergeNodeToRep (NodeID nodeId, NodeID newRepId) |
| Merge sub node to its rep. More...
|
|
virtual bool | mergeSrcToTgt (NodeID srcId, NodeID tgtId) |
|
void | updateNodeRepAndSubs (NodeID nodeId, NodeID newRepId) |
| Updates subnodes of its rep, and rep node of its subs. More...
|
|
virtual NodeStack & | SCCDetect () |
| SCC detection. More...
|
|
void | sanitizePts () |
| Sanitize pts for field insensitive objects. More...
|
|
virtual const std::string | PTAName () const |
| Get PTA name. More...
|
|
virtual bool | matchType (NodeID, NodeID, const NormalGepCGEdge *) |
| match types for Gep Edges More...
|
|
virtual void | addTypeForGepObjNode (NodeID, const NormalGepCGEdge *) |
| add type for newly created GepObjNode More...
|
|
void | processAllAddr () |
| handling various constraints More...
|
|
virtual bool | processLoad (NodeID node, const ConstraintEdge *load) |
|
virtual bool | processStore (NodeID node, const ConstraintEdge *load) |
|
virtual bool | processCopy (NodeID node, const ConstraintEdge *edge) |
|
virtual bool | processGep (NodeID node, const GepCGEdge *edge) |
|
virtual void | handleCopyGep (ConstraintNode *node) |
|
virtual void | handleLoadStore (ConstraintNode *node) |
|
virtual void | processAddr (const AddrCGEdge *addr) |
|
virtual bool | processGepPts (const PointsTo &pts, const GepCGEdge *edge) |
|
void | mergeSccNodes (NodeID repNodeId, const NodeBS &subNodes) |
| Merge sub node in a SCC cycle to their rep node. More...
|
|
void | mergeSccCycle () |
|
void | collapsePWCNode (NodeID nodeId) |
| Collapse a field object into its base for field insensitive anlaysis. More...
|
|
void | collapseFields () |
|
bool | collapseNodePts (NodeID nodeId) |
|
bool | collapseField (NodeID nodeId) |
|
| WPASolver () |
| Constructor. More...
|
|
virtual | ~WPASolver () |
| Destructor. More...
|
|
SCC * | getSCCDetector () const |
| Get SCC detector. More...
|
|
virtual NodeStack & | SCCDetect (NodeSet &candidates) |
|
GNODE * | Node (NodeID id) |
| Get node on the graph. More...
|
|
NodeID | Node_Index (GNODE node) |
| Get node ID. More...
|
|
const GraphType | graph () |
| Get/Set graph methods. More...
|
|
void | setGraph (GraphType g) |
|
virtual void | propagate (GNODE *v) |
|
virtual bool | propFromSrcToDst (GEDGE *) |
| Propagate information from source to destination node, to be implemented in the child class. More...
|
|
NodeID | popFromWorklist () |
| Worklist operations. More...
|
|
virtual void | pushIntoWorklist (NodeID id) |
|
bool | isWorklistEmpty () |
|
bool | isInWorklist (NodeID id) |
|
PTDataTy * | getPTDataTy () const |
| Get points-to data structure. More...
|
|
DiffPTDataTy * | getDiffPTDataTy () const |
|
DFPTDataTy * | getDFPTDataTy () const |
|
MutDFPTDataTy * | getMutDFPTDataTy () const |
|
VersionedPTDataTy * | getVersionedPTDataTy () const |
|
virtual void | onTheFlyCallGraphSolve (const CallSiteToFunPtrMap &callsites, CallEdgeMap &newEdges) |
| On the fly call graph construction. More...
|
|
const CallSiteToFunPtrMap & | getIndirectCallsites () const |
| Return all indirect callsites. More...
|
|
NodeID | getFunPtr (const CallBlockNode *cs) const |
| Return function pointer PAGNode at a callsite cs. More...
|
|
bool | dumpGraph () |
| Whether to dump the graph for debugging purpose. More...
|
|
void | resetObjFieldSensitive () |
| Reset all object node as field-sensitive. More...
|
|
virtual void | validateTests () |
| Alias check functions to verify correctness of pointer analysis. More...
|
|
virtual void | validateSuccessTests (std::string fun) |
|
virtual void | validateExpectedFailureTests (std::string fun) |
|
Hybrid Cycle Detection Based Andersen Analysis
Definition at line 635 of file Andersen.h.