SVF
Public Member Functions | Static Public Member Functions | Protected Member Functions | Static Private Attributes | List of all members
SVF::AndersenHLCD Class Reference

#include <Andersen.h>

Inheritance diagram for SVF::AndersenHLCD:
SVF::AndersenHCD SVF::AndersenLCD SVF::Andersen SVF::Andersen SVF::AndersenBase SVF::AndersenBase SVF::WPASolver< GraphType > SVF::BVDataPTAImpl SVF::WPASolver< GraphType > SVF::BVDataPTAImpl SVF::PointerAnalysis SVF::PointerAnalysis

Public Member Functions

 AndersenHLCD (PAG *_pag, PTATY type=AndersenHLCD_WPA)
 
- Public Member Functions inherited from SVF::AndersenHCD
 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 PointsTogetPts (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...
 
NodeBSsccSubNodes (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...
 
ConstraintGraphgetConstraintGraph ()
 Get constraint graph. More...
 
void printStat ()
 dump statistics More...
 
virtual void normalizePointsTo () override
 
void cleanConsCG (NodeID id)
 remove redundant gepnodes in constraint graph More...
 
- Public Member Functions inherited from SVF::BVDataPTAImpl
 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 NodeBSgetRevPts (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 ()
 
- Public Member Functions inherited from SVF::PointerAnalysis
Size_t getNumOfResolvedIndCallEdge () const
 Return number of resolved indirect call edges. More...
 
PTACallGraphgetPTACallGraph () const
 Return call graph. More...
 
CallGraphSCCgetCallGraphSCC () 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...
 
PTAStatgetStat () const
 Get PTA stat. More...
 
SVFModulegetModule () const
 Module. More...
 
OrderedNodeSetgetAllValidPtrs ()
 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...
 
CommonCHGraphgetCHGraph () 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 TypeSystemgetTypeSystem () const
 get TypeSystem More...
 
PAGgetPAG () 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 NodeBSgetAllFieldsObjNode (NodeID id)
 
void setObjFieldInsensitive (NodeID id)
 
bool isFieldInsensitive (NodeID id) const
 
CallEdgeMapgetIndCallMap ()
 Get callees from an indirect callsite. More...
 
bool hasIndCSCallees (const CallBlockNode *cs) const
 
const FunctionSetgetIndCSCallees (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...
 
- Public Member Functions inherited from SVF::AndersenLCD
 AndersenLCD (PAG *_pag, PTATY type=AndersenLCD_WPA)
 

Static Public Member Functions

static AndersenHLCDcreateAndersenHLCD (PAG *_pag)
 Create an singleton instance directly instead of invoking llvm pass manager. More...
 
static void releaseAndersenHLCD ()
 
- Static Public Member Functions inherited from SVF::AndersenHCD
static AndersenHCDcreateAndersenHCD (PAG *_pag)
 Create an singleton instance directly instead of invoking llvm pass manager. More...
 
static void releaseAndersenHCD ()
 
- Static Public Member Functions inherited from SVF::Andersen
static bool classof (const Andersen *)
 Methods for support type inquiry through isa, cast, and dyn_cast: More...
 
static bool classof (const PointerAnalysis *pta)
 
- Static Public Member Functions inherited from SVF::AndersenBase
static bool classof (const AndersenBase *)
 Methods for support type inquiry through isa, cast, and dyn_cast: More...
 
static bool classof (const PointerAnalysis *pta)
 
- Static Public Member Functions inherited from SVF::BVDataPTAImpl
static bool classof (const PointerAnalysis *pta)
 
- Static Public Member Functions inherited from SVF::AndersenLCD
static AndersenLCDcreateAndersenLCD (PAG *_pag)
 Create an singleton instance directly instead of invoking llvm pass manager. More...
 
static void releaseAndersenLCD ()
 

Protected Member Functions

void initialize ()
 
void solveWorklist ()
 
void handleCopyGep (ConstraintNode *node)
 
void mergeSCC (NodeID nodeId)
 
bool mergeSrcToTgt (NodeID nodeId, NodeID newRepId)
 
- Protected Member Functions inherited from SVF::AndersenHCD
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 PointsTogetDiffPts (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...
 
void updateNodeRepAndSubs (NodeID nodeId, NodeID newRepId)
 Updates subnodes of its rep, and rep node of its subs. 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 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)
 
- Protected Member Functions inherited from SVF::WPASolver< GraphType >
 WPASolver ()
 Constructor. More...
 
virtual ~WPASolver ()
 Destructor. More...
 
SCCgetSCCDetector () const
 Get SCC detector. More...
 
virtual NodeStackSCCDetect (NodeSet &candidates)
 
GNODENode (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)
 
- Protected Member Functions inherited from SVF::BVDataPTAImpl
PTDataTygetPTDataTy () const
 Get points-to data structure. More...
 
DiffPTDataTygetDiffPTDataTy () const
 
DFPTDataTygetDFPTDataTy () const
 
MutDFPTDataTygetMutDFPTDataTy () const
 
VersionedPTDataTygetVersionedPTDataTy () const
 
virtual void onTheFlyCallGraphSolve (const CallSiteToFunPtrMap &callsites, CallEdgeMap &newEdges)
 On the fly call graph construction. More...
 
- Protected Member Functions inherited from SVF::PointerAnalysis
const CallSiteToFunPtrMapgetIndirectCallsites () 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)
 
- Protected Member Functions inherited from SVF::AndersenLCD
virtual void mergeSCC ()
 
NodeStackSCCDetect ()
 
bool hasLCDCandidate () const
 
void cleanLCDCandidate ()
 
void addLCDCandidate (NodeID nodeId)
 
bool isMetEdge (ConstraintEdge *edge) const
 
void addMetEdge (ConstraintEdge *edge)
 

Static Private Attributes

static AndersenHLCDhlcdAndersen = nullptr
 

Additional Inherited Members

- Public Types inherited from SVF::AndersenHCD
typedef SCCDetection< OfflineConsG * > OSCC
 
- Public Types inherited from SVF::Andersen
typedef SCCDetection< ConstraintGraph * > CGSCC
 
typedef OrderedMap< CallSite, NodeIDCallSite2DummyValPN
 
- Public Types inherited from SVF::WPASolver< GraphType >
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< NodeIDWorkList
 
- Public Types inherited from SVF::BVDataPTAImpl
typedef PTData< NodeID, NodeBS, NodeID, PointsToPTDataTy
 
typedef MutablePTData< NodeID, NodeBS, NodeID, PointsToMutPTDataTy
 
typedef DiffPTData< NodeID, NodeBS, NodeID, PointsToDiffPTDataTy
 
typedef MutableDiffPTData< NodeID, NodeBS, NodeID, PointsToMutDiffPTDataTy
 
typedef DFPTData< NodeID, NodeBS, NodeID, PointsToDFPTDataTy
 
typedef MutableDFPTData< NodeID, NodeBS, NodeID, PointsToMutDFPTDataTy
 
typedef IncMutableDFPTData< NodeID, NodeBS, NodeID, PointsToIncMutDFPTDataTy
 
typedef VersionedPTData< NodeID, NodeBS, NodeID, PointsTo, VersionedVar, Set< VersionedVar > > VersionedPTDataTy
 
typedef MutableVersionedPTData< NodeID, NodeBS, NodeID, PointsTo, VersionedVar, Set< VersionedVar > > MutVersionedPTDataTy
 
- Public Types inherited from SVF::PointerAnalysis
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 *, FunctionSetCallEdgeMap
 
typedef SCCDetection< PTACallGraph * > CallGraphSCC
 
typedef Set< const GlobalValue * > VTableSet
 
typedef Set< const SVFFunction * > VFunSet
 
- Public Attributes inherited from SVF::AndersenBase
NodeBS redundantGepNodes
 
- Public Attributes inherited from SVF::WPASolver< GraphType >
u32_t numOfIteration
 num of iterations during constaint solving More...
 
- Static Public Attributes inherited from SVF::AndersenBase
static Size_t numOfProcessedAddr = 0
 Statistics. More...
 
static Size_t numOfProcessedCopy = 0
 Number of processed Addr edge. More...
 
static Size_t numOfProcessedGep = 0
 Number of processed Copy edge. More...
 
static Size_t numOfProcessedLoad = 0
 Number of processed Gep edge. More...
 
static Size_t numOfProcessedStore = 0
 Number of processed Load edge. More...
 
static Size_t numOfSfrs = 0
 Number of processed Store edge. More...
 
static Size_t numOfFieldExpand = 0
 
static Size_t numOfSCCDetection = 0
 
static double timeOfSCCDetection = 0
 
static double timeOfSCCMerges = 0
 
static double timeOfCollapse = 0
 
static Size_t AveragePointsToSetSize = 0
 
static Size_t MaxPointsToSetSize = 0
 
static double timeOfProcessCopyGep = 0
 
static double timeOfProcessLoadStore = 0
 
static double timeOfUpdateCallGraph = 0
 
- Static Public Attributes inherited from SVF::PointerAnalysis
static const std::string aliasTestMayAlias = "MAYALIAS"
 
static const std::string aliasTestMayAliasMangled = "_Z8MAYALIASPvS_"
 
static const std::string aliasTestNoAlias = "NOALIAS"
 
static const std::string aliasTestNoAliasMangled = "_Z7NOALIASPvS_"
 
static const std::string aliasTestPartialAlias = "PARTIALALIAS"
 
static const std::string aliasTestPartialAliasMangled = "_Z12PARTIALALIASPvS_"
 
static const std::string aliasTestMustAlias = "MUSTALIAS"
 
static const std::string aliasTestMustAliasMangled = "_Z9MUSTALIASPvS_"
 
static const std::string aliasTestFailMayAlias = "EXPECTEDFAIL_MAYALIAS"
 
static const std::string aliasTestFailMayAliasMangled = "_Z21EXPECTEDFAIL_MAYALIASPvS_"
 
static const std::string aliasTestFailNoAlias = "EXPECTEDFAIL_NOALIAS"
 
static const std::string aliasTestFailNoAliasMangled = "_Z20EXPECTEDFAIL_NOALIASPvS_"
 
- Protected Attributes inherited from SVF::Andersen
CallSite2DummyValPN callsite2DummyValPN
 Map an instruction to a dummy obj which created at an indirect callsite, which invokes a heap allocator. More...
 
bool pwcOpt
 
bool diffOpt
 
- Protected Attributes inherited from SVF::AndersenBase
ConstraintGraphconsCG
 Constraint Graph. More...
 
- Protected Attributes inherited from SVF::WPASolver< GraphType >
bool reanalyze
 Reanalyze if any constraint value changed. More...
 
u32_t iterationForPrintStat
 print out statistics for i-th iteration More...
 
GraphType _graph
 Graph. More...
 
SCCscc
 SCC. More...
 
WorkList worklist
 Worklist for resolution. More...
 
- Protected Attributes inherited from SVF::PointerAnalysis
SVFModulesvfMod
 Module. More...
 
PTATY ptaTy
 Pointer analysis Type. More...
 
PTAImplTy ptaImplTy
 PTA implementation type. More...
 
PTAStatstat
 Statistics. More...
 
PTACallGraphptaCallGraph
 Call graph used for pointer analysis. More...
 
CallGraphSCCcallGraphSCC
 SCC for CallGraph. More...
 
ICFGicfg
 Interprocedural control-flow graph. More...
 
TypeSystemtypeSystem
 TypeSystem. More...
 
bool print_stat
 User input flags. More...
 
bool alias_validation
 Flag for validating points-to/alias results. More...
 
u32_t OnTheFlyIterBudgetForStat
 Flag for iteration budget for on-the-fly statistics. More...
 
- Static Protected Attributes inherited from SVF::PointerAnalysis
static PAGpag = nullptr
 PAG. More...
 
static CommonCHGraphchgraph = nullptr
 CHGraph. More...
 

Detailed Description

Hybrid Lazy Cycle Detection Based Andersen Analysis

Definition at line 711 of file Andersen.h.

Constructor & Destructor Documentation

◆ AndersenHLCD()

SVF::AndersenHLCD::AndersenHLCD ( PAG _pag,
PTATY  type = AndersenHLCD_WPA 
)
inline

Definition at line 718 of file Andersen.h.

718  :
719  Andersen(_pag, type), AndersenHCD(_pag, type), AndersenLCD(_pag, type)
720  {
721  }
Andersen(PAG *_pag, PTATY type=Andersen_WPA, bool alias_check=true)
Constructor.
Definition: Andersen.h:164
AndersenLCD(PAG *_pag, PTATY type=AndersenLCD_WPA)
Definition: Andersen.h:565
AndersenHCD(PAG *_pag, PTATY type=AndersenHCD_WPA)
Definition: Andersen.h:647

Member Function Documentation

◆ createAndersenHLCD()

static AndersenHLCD* SVF::AndersenHLCD::createAndersenHLCD ( PAG _pag)
inlinestatic

Create an singleton instance directly instead of invoking llvm pass manager.

Definition at line 724 of file Andersen.h.

725  {
726  if (hlcdAndersen == nullptr)
727  {
728  hlcdAndersen = new AndersenHLCD(_pag);
730  return hlcdAndersen;
731  }
732  return hlcdAndersen;
733  }
static AndersenHLCD * hlcdAndersen
Definition: Andersen.h:715
virtual void analyze() override
Andersen analysis.
Definition: Andersen.cpp:92
AndersenHLCD(PAG *_pag, PTATY type=AndersenHLCD_WPA)
Definition: Andersen.h:718

◆ handleCopyGep()

void SVF::AndersenHLCD::handleCopyGep ( ConstraintNode node)
inlineprotectedvirtual

Process copy and gep edges

Reimplemented from SVF::AndersenLCD.

Definition at line 751 of file Andersen.h.

752  {
754  }
virtual void handleCopyGep(ConstraintNode *node)
Definition: AndersenLCD.cpp:56

◆ initialize()

void SVF::AndersenHLCD::initialize ( )
inlineprotectedvirtual

AndersenHCD initilizer, including initilization of PAG, constraint graph and offline constraint graph

Reimplemented from SVF::AndersenHCD.

Definition at line 743 of file Andersen.h.

744  {
746  }
virtual void initialize()
Definition: AndersenHCD.cpp:44

◆ mergeSCC()

void AndersenHLCD::mergeSCC ( NodeID  nodeId)
protectedvirtual

Collapse nodes and fields based on the result of both offline and online SCC detection

Reimplemented from SVF::AndersenHCD.

Definition at line 41 of file AndersenHLCD.cpp.

42 {
43  AndersenHCD::mergeSCC(nodeId);
45 }
virtual void mergeSCC(NodeID nodeId)
Definition: AndersenHCD.cpp:77
virtual void mergeSCC()
Definition: AndersenLCD.cpp:90

◆ mergeSrcToTgt()

bool SVF::AndersenHLCD::mergeSrcToTgt ( NodeID  nodeId,
NodeID  newRepId 
)
inlineprotectedvirtual

merge nodeId to newRepId. Return true if the newRepId is a PWC node

union pts of node to rep

move the edges from node to rep, and remove the node

set rep and sub relations

Reimplemented from SVF::AndersenLCD.

Definition at line 756 of file Andersen.h.

757  {
758  return AndersenLCD::mergeSrcToTgt(nodeId, newRepId);
759  }
bool mergeSrcToTgt(NodeID nodeId, NodeID newRepId)

◆ releaseAndersenHLCD()

static void SVF::AndersenHLCD::releaseAndersenHLCD ( )
inlinestatic

Definition at line 735 of file Andersen.h.

736  {
737  if (hlcdAndersen)
738  delete hlcdAndersen;
739  hlcdAndersen = nullptr;
740  }
static AndersenHLCD * hlcdAndersen
Definition: Andersen.h:715

◆ solveWorklist()

void SVF::AndersenHLCD::solveWorklist ( )
inlineprotectedvirtual

Reimplemented from SVF::AndersenLCD.

Definition at line 747 of file Andersen.h.

748  {
750  }
virtual void solveWorklist()
Definition: AndersenHCD.cpp:58

Member Data Documentation

◆ hlcdAndersen

AndersenHLCD * AndersenHLCD::hlcdAndersen = nullptr
staticprivate

Definition at line 715 of file Andersen.h.


The documentation for this class was generated from the following files: