SVF
|
Incremental version of the mutable data-flow points-to data structure. More...
#include <MutablePointsToDS.h>
Public Types | |
typedef PTData< Key, KeySet, Data, DataSet > | BasePTData |
typedef MutablePTData< Key, KeySet, Data, DataSet > | BaseMutPTData |
typedef DFPTData< Key, KeySet, Data, DataSet > | BaseDFPTData |
typedef MutableDFPTData< Key, KeySet, Data, DataSet > | BaseMutDFPTData |
typedef BasePTData::PTDataTy | PTDataTy |
typedef BaseDFPTData::LocID | LocID |
typedef Map< LocID, DataSet > | UpdatedVarMap |
for propagating only newly added variable in IN/OUT set More... | |
typedef UpdatedVarMap::iterator | UpdatedVarMapIter |
typedef UpdatedVarMap::const_iterator | UpdatedVarconstIter |
typedef DataSet::iterator | DataIter |
![]() | |
typedef PTData< Key, KeySet, Data, DataSet > | BasePTData |
typedef MutablePTData< Key, KeySet, Data, DataSet > | BaseMutPTData |
typedef DFPTData< Key, KeySet, Data, DataSet > | BaseDFPTData |
typedef BasePTData::PTDataTy | PTDataTy |
typedef BaseDFPTData::LocID | LocID |
typedef BaseMutPTData::PtsMap | PtsMap |
typedef BaseMutPTData::PtsMapConstIter | PtsMapConstIter |
typedef Map< LocID, PtsMap > | DFPtsMap |
Data-flow point-to map. More... | |
typedef DFPtsMap::iterator | DFPtsMapIter |
typedef DFPtsMap::const_iterator | DFPtsMapconstIter |
![]() | |
typedef PTData< Key, KeySet, Data, DataSet > | BasePTData |
typedef BasePTData::PTDataTy | PTDataTy |
typedef NodeID | LocID |
![]() | |
enum | PTDataTy { Base, MutBase, Diff, MutDiff, DataFlow, MutDataFlow, IncMutDataFlow, Versioned, MutVersioned } |
Types of a points-to data structures. More... | |
Public Member Functions | |
IncMutableDFPTData (bool reversePT=true, PTDataTy ty=BasePTData::IncMutDataFlow) | |
Constructor. More... | |
virtual | ~IncMutableDFPTData () |
virtual bool | updateDFInFromIn (LocID srcLoc, const Key &srcVar, LocID dstLoc, const Key &dstVar) override |
virtual bool | updateDFInFromOut (LocID srcLoc, const Key &srcVar, LocID dstLoc, const Key &dstVar) override |
Union (IN[dstLoc:dstVar], OUT[srcLoc:srcVar]). More... | |
virtual bool | updateDFOutFromIn (LocID srcLoc, const Key &srcVar, LocID dstLoc, const Key &dstVar) override |
Union (OUT[dstLoc:dstVar], IN[srcLoc:srcVar]). More... | |
virtual bool | updateAllDFInFromOut (LocID srcLoc, const Key &srcVar, LocID dstLoc, const Key &dstVar) override |
Union (IN[dstLoc::dstVar], OUT[srcLoc:srcVar]. There is no flag check, unlike the above. More... | |
virtual bool | updateAllDFInFromIn (LocID srcLoc, const Key &srcVar, LocID dstLoc, const Key &dstVar) override |
Union (IN[dstLoc::dstVar], IN[srcLoc:srcVar]. There is no flag check, unlike the above. More... | |
virtual bool | updateAllDFOutFromIn (LocID loc, const Key &singleton, bool strongUpdates) override |
For each variable var in IN at loc, do updateDFOutFromIn(loc, var, loc, var). More... | |
virtual bool | updateTLVPts (LocID srcLoc, const Key &srcVar, const Key &dstVar) override |
Update points-to set of top-level pointers with IN[srcLoc:srcVar]. More... | |
virtual bool | updateATVPts (const Key &srcVar, LocID dstLoc, const Key &dstVar) override |
Update address-taken variables OUT[dstLoc:dstVar] with points-to of top-level pointers. More... | |
virtual void | clearAllDFOutUpdatedVar (LocID loc) override |
![]() | |
MutableDFPTData (bool reversePT=true, PTDataTy ty=BaseDFPTData::MutDataFlow) | |
Constructor. More... | |
virtual | ~MutableDFPTData () |
virtual const PtsMap & | getPtsMap () const |
virtual void | clear () override |
Clears all points-to sets as if nothing is stored. More... | |
virtual const DataSet & | getPts (const Key &var) override |
Get points-to set of var. More... | |
virtual const KeySet & | getRevPts (const Data &datum) override |
Get reverse points-to set of a datum. More... | |
virtual bool | hasDFInSet (LocID loc) const override |
virtual bool | hasDFOutSet (LocID loc) const override |
virtual bool | hasDFInSet (LocID loc, const Key &var) const override |
virtual bool | hasDFOutSet (LocID loc, const Key &var) const override |
virtual DataSet & | getDFInPtsSet (LocID loc, const Key &var) override |
virtual DataSet & | getDFOutPtsSet (LocID loc, const Key &var) override |
const PtsMap & | getDFInPtsMap (LocID loc) |
const PtsMap & | getDFOutPtsMap (LocID loc) |
const DFPtsMap & | getDFIn () |
const DFPtsMap & | getDFOut () |
virtual bool | addPts (const Key &dstKey, const Key &srcKey) override |
virtual bool | unionPts (const Key &dstKey, const Key &srcKey) override |
Performs pts(dstVar) = pts(dstVar) U pts(srcVar). More... | |
virtual bool | unionPts (const Key &dstKey, const DataSet &srcDataSet) override |
Performs pts(dstVar) = pts(dstVar) U srcDataSet. More... | |
virtual void | clearPts (const Key &var, const Data &element) override |
Clears element from the points-to set of var. More... | |
virtual void | clearFullPts (const Key &var) override |
Fully clears the points-to set of var. More... | |
virtual void | dumpPTData () override |
virtual void | dumpPts (const PtsMap &ptsSet, raw_ostream &O=SVFUtil::outs()) const |
![]() | |
DFPTData (bool reversePT=true, PTDataTy ty=BasePTData::DataFlow) | |
Constructor. More... | |
virtual | ~DFPTData () |
![]() | |
PTData (bool reversePT=true, PTDataTy ty=PTDataTy::Base) | |
virtual | ~PTData () |
PTDataTy | getPTDTY () const |
Get the type of points-to data structure that this is. More... | |
virtual bool | addPts (const Key &var, const Data &element)=0 |
Adds element to the points-to set associated with var. More... | |
Static Public Member Functions | |
static bool | classof (const IncMutableDFPTData< Key, KeySet, Data, DataSet > *) |
static bool | classof (const PTData< Key, KeySet, Data, DataSet > *ptd) |
![]() | |
static bool | classof (const MutableDFPTData< Key, KeySet, Data, DataSet > *) |
static bool | classof (const PTData< Key, KeySet, Data, DataSet > *ptd) |
![]() | |
static bool | classof (const DFPTData< Key, KeySet, Data, DataSet > *) |
static bool | classof (const PTData< Key, KeySet, Data, DataSet > *ptd) |
Private Member Functions | |
void | setVarDFInSetUpdated (LocID loc, const Key &var) |
Handle address-taken variables whose IN pts changed. More... | |
void | removeVarFromDFInUpdatedSet (LocID loc, const Key &var) |
Remove var from loc's IN updated set. More... | |
bool | varHasNewDFInPts (LocID loc, const Key &var) |
Return TRUE if var has new pts in loc's IN set. More... | |
const DataSet & | getDFInUpdatedVar (LocID loc) |
Get all var which have new pts informationin loc's IN set. More... | |
void | setVarDFOutSetUpdated (LocID loc, const Key &var) |
Handle address-taken variables whose OUT pts changed. More... | |
void | removeVarFromDFOutUpdatedSet (LocID loc, const Key &var) |
Remove var from loc's OUT updated set. More... | |
bool | varHasNewDFOutPts (LocID loc, const Key &var) |
Return TRUE if var has new pts in loc's OUT set. More... | |
const DataSet & | getDFOutUpdatedVar (LocID loc) |
Get all var which have new pts informationin loc's OUT set. More... | |
Private Attributes | |
UpdatedVarMap | outUpdatedVarMap |
UpdatedVarMap | inUpdatedVarMap |
Additional Inherited Members | |
![]() | |
bool | unionPts (DataSet &dstDataSet, const DataSet &srcDataSet) |
bool | addPts (DataSet &d, const Data &e) |
![]() | |
DFPtsMap | dfInPtsMap |
Data-flow IN set. More... | |
DFPtsMap | dfOutPtsMap |
Data-flow OUT set. More... | |
MutablePTData< Key, KeySet, Data, DataSet > | mutPTData |
![]() | |
bool | rev |
Whether we maintain reverse points-to sets or not. More... | |
PTDataTy | ptdTy |
Incremental version of the mutable data-flow points-to data structure.
Definition at line 593 of file MutablePointsToDS.h.
typedef DFPTData<Key, KeySet, Data, DataSet> SVF::IncMutableDFPTData< Key, KeySet, Data, DataSet >::BaseDFPTData |
Definition at line 598 of file MutablePointsToDS.h.
typedef MutableDFPTData<Key, KeySet, Data, DataSet> SVF::IncMutableDFPTData< Key, KeySet, Data, DataSet >::BaseMutDFPTData |
Definition at line 599 of file MutablePointsToDS.h.
typedef MutablePTData<Key, KeySet, Data, DataSet> SVF::IncMutableDFPTData< Key, KeySet, Data, DataSet >::BaseMutPTData |
Definition at line 597 of file MutablePointsToDS.h.
typedef PTData<Key, KeySet, Data, DataSet> SVF::IncMutableDFPTData< Key, KeySet, Data, DataSet >::BasePTData |
Definition at line 596 of file MutablePointsToDS.h.
typedef DataSet::iterator SVF::IncMutableDFPTData< Key, KeySet, Data, DataSet >::DataIter |
Definition at line 606 of file MutablePointsToDS.h.
typedef BaseDFPTData::LocID SVF::IncMutableDFPTData< Key, KeySet, Data, DataSet >::LocID |
Definition at line 602 of file MutablePointsToDS.h.
typedef BasePTData::PTDataTy SVF::IncMutableDFPTData< Key, KeySet, Data, DataSet >::PTDataTy |
Definition at line 600 of file MutablePointsToDS.h.
typedef UpdatedVarMap::const_iterator SVF::IncMutableDFPTData< Key, KeySet, Data, DataSet >::UpdatedVarconstIter |
Definition at line 605 of file MutablePointsToDS.h.
typedef Map<LocID, DataSet> SVF::IncMutableDFPTData< Key, KeySet, Data, DataSet >::UpdatedVarMap |
for propagating only newly added variable in IN/OUT set
Definition at line 603 of file MutablePointsToDS.h.
typedef UpdatedVarMap::iterator SVF::IncMutableDFPTData< Key, KeySet, Data, DataSet >::UpdatedVarMapIter |
Definition at line 604 of file MutablePointsToDS.h.
|
inline |
Constructor.
Definition at line 614 of file MutablePointsToDS.h.
|
inlinevirtual |
Definition at line 616 of file MutablePointsToDS.h.
|
inlinestatic |
Methods to support type inquiry through isa, cast, and dyn_cast:
Definition at line 729 of file MutablePointsToDS.h.
|
inlinestatic |
Definition at line 734 of file MutablePointsToDS.h.
|
inlineoverridevirtual |
Reimplemented from SVF::MutableDFPTData< Key, KeySet, Data, DataSet >.
Definition at line 714 of file MutablePointsToDS.h.
|
inlineprivate |
Get all var which have new pts informationin loc's IN set.
Definition at line 763 of file MutablePointsToDS.h.
|
inlineprivate |
Get all var which have new pts informationin loc's OUT set.
Definition at line 792 of file MutablePointsToDS.h.
|
inlineprivate |
Remove var from loc's IN updated set.
Definition at line 748 of file MutablePointsToDS.h.
|
inlineprivate |
Remove var from loc's OUT updated set.
Definition at line 777 of file MutablePointsToDS.h.
|
inlineprivate |
Handle address-taken variables whose IN pts changed.
Add var into loc's IN updated set. Called when var's pts in loc's IN set changed
Definition at line 743 of file MutablePointsToDS.h.
|
inlineprivate |
Handle address-taken variables whose OUT pts changed.
Add var into loc's OUT updated set. Called when var's pts in loc's OUT set changed
Definition at line 772 of file MutablePointsToDS.h.
|
inlineoverridevirtual |
Union (IN[dstLoc::dstVar], IN[srcLoc:srcVar]. There is no flag check, unlike the above.
Reimplemented from SVF::MutableDFPTData< Key, KeySet, Data, DataSet >.
Definition at line 664 of file MutablePointsToDS.h.
|
inlineoverridevirtual |
Union (IN[dstLoc::dstVar], OUT[srcLoc:srcVar]. There is no flag check, unlike the above.
Reimplemented from SVF::MutableDFPTData< Key, KeySet, Data, DataSet >.
Definition at line 654 of file MutablePointsToDS.h.
|
inlineoverridevirtual |
For each variable var in IN at loc, do updateDFOutFromIn(loc, var, loc, var).
Only variables has new pts from IN set need to be updated.
Enable strong updates if it is required to do so
Only variables has new pts from IN set need to be updated.
Enable strong updates if it is required to do so
Reimplemented from SVF::MutableDFPTData< Key, KeySet, Data, DataSet >.
Definition at line 674 of file MutablePointsToDS.h.
|
inlineoverridevirtual |
Update address-taken variables OUT[dstLoc:dstVar] with points-to of top-level pointers.
Reimplemented from SVF::MutableDFPTData< Key, KeySet, Data, DataSet >.
Definition at line 704 of file MutablePointsToDS.h.
|
inlineoverridevirtual |
Update points-to for IN/OUT set IN[loc:var] represents the points-to of variable var in the IN set of location loc. union(ptsDst, ptsSrc) represents ptsDst = ptsDst U ptsSrc.
Union (IN[dstLoc:dstVar], IN[srcLoc:srcVar]).
Reimplemented from SVF::MutableDFPTData< Key, KeySet, Data, DataSet >.
Definition at line 618 of file MutablePointsToDS.h.
|
inlineoverridevirtual |
Union (IN[dstLoc:dstVar], OUT[srcLoc:srcVar]).
Reimplemented from SVF::MutableDFPTData< Key, KeySet, Data, DataSet >.
Definition at line 629 of file MutablePointsToDS.h.
|
inlineoverridevirtual |
Union (OUT[dstLoc:dstVar], IN[srcLoc:srcVar]).
Reimplemented from SVF::MutableDFPTData< Key, KeySet, Data, DataSet >.
Definition at line 640 of file MutablePointsToDS.h.
|
inlineoverridevirtual |
Update points-to set of top-level pointers with IN[srcLoc:srcVar].
Reimplemented from SVF::MutableDFPTData< Key, KeySet, Data, DataSet >.
Definition at line 694 of file MutablePointsToDS.h.
|
inlineprivate |
Return TRUE if var has new pts in loc's IN set.
Definition at line 755 of file MutablePointsToDS.h.
|
inlineprivate |
Return TRUE if var has new pts in loc's OUT set.
Definition at line 784 of file MutablePointsToDS.h.
|
private |
Definition at line 610 of file MutablePointsToDS.h.
|
private |
Definition at line 609 of file MutablePointsToDS.h.