Static Value-Flow Analysis
|
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 |
Public Types inherited from SVF::MutableDFPTData< Key, KeySet, Data, DataSet > | |
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 |
Public Types inherited from SVF::DFPTData< Key, KeySet, Data, DataSet > | |
typedef PTData< Key, KeySet, Data, DataSet > | BasePTData |
typedef BasePTData::PTDataTy | PTDataTy |
typedef NodeID | LocID |
Public Types inherited from SVF::PTData< Key, KeySet, Data, DataSet > | |
enum | PTDataTy { Base , MutBase , Diff , MutDiff , DataFlow , MutDataFlow , MutIncDataFlow , Versioned , MutVersioned , PersBase , PersDiff , PersDataFlow , PersIncDataFlow , PersVersioned } |
Types of a points-to data structures. More... | |
Public Member Functions | |
MutableIncDFPTData (bool reversePT=true, PTDataTy ty=BasePTData::MutIncDataFlow) | |
Constructor. More... | |
virtual | ~MutableIncDFPTData () |
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 |
Public Member Functions inherited from SVF::MutableDFPTData< Key, KeySet, Data, DataSet > | |
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 |
virtual Map< DataSet, unsigned > | getAllPts (bool liveOnly) const 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 | remapAllPts (void) override |
Remaps all points-to sets to use the current mapping. More... | |
virtual void | dumpPTData () override |
virtual void | dumpPts (const PtsMap &ptsSet, OutStream &O=SVFUtil::outs()) const |
Public Member Functions inherited from SVF::DFPTData< Key, KeySet, Data, DataSet > | |
DFPTData (bool reversePT=true, PTDataTy ty=BasePTData::DataFlow) | |
Constructor. More... | |
virtual | ~DFPTData () |
Public Member Functions inherited from SVF::PTData< Key, KeySet, Data, DataSet > | |
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 MutableIncDFPTData< Key, KeySet, Data, DataSet > *) |
static bool | classof (const PTData< Key, KeySet, Data, DataSet > *ptd) |
Static Public Member Functions inherited from SVF::MutableDFPTData< Key, KeySet, Data, DataSet > | |
static bool | classof (const MutableDFPTData< Key, KeySet, Data, DataSet > *) |
static bool | classof (const PTData< Key, KeySet, Data, DataSet > *ptd) |
Static Public Member Functions inherited from SVF::DFPTData< Key, KeySet, Data, DataSet > | |
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 information in 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 information in loc's OUT set. More... | |
Private Attributes | |
UpdatedVarMap | outUpdatedVarMap |
UpdatedVarMap | inUpdatedVarMap |
Additional Inherited Members | |
Protected Member Functions inherited from SVF::MutableDFPTData< Key, KeySet, Data, DataSet > | |
bool | unionPts (DataSet &dstDataSet, const DataSet &srcDataSet) |
bool | addPts (DataSet &d, const Data &e) |
Protected Attributes inherited from SVF::MutableDFPTData< Key, KeySet, Data, DataSet > | |
DFPtsMap | dfInPtsMap |
Data-flow IN set. More... | |
DFPtsMap | dfOutPtsMap |
Data-flow OUT set. More... | |
MutablePTData< Key, KeySet, Data, DataSet > | mutPTData |
Protected Attributes inherited from SVF::PTData< Key, KeySet, Data, DataSet > | |
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 682 of file MutablePointsToDS.h.
typedef DFPTData<Key, KeySet, Data, DataSet> SVF::MutableIncDFPTData< Key, KeySet, Data, DataSet >::BaseDFPTData |
Definition at line 687 of file MutablePointsToDS.h.
typedef MutableDFPTData<Key, KeySet, Data, DataSet> SVF::MutableIncDFPTData< Key, KeySet, Data, DataSet >::BaseMutDFPTData |
Definition at line 688 of file MutablePointsToDS.h.
typedef MutablePTData<Key, KeySet, Data, DataSet> SVF::MutableIncDFPTData< Key, KeySet, Data, DataSet >::BaseMutPTData |
Definition at line 686 of file MutablePointsToDS.h.
typedef PTData<Key, KeySet, Data, DataSet> SVF::MutableIncDFPTData< Key, KeySet, Data, DataSet >::BasePTData |
Definition at line 685 of file MutablePointsToDS.h.
typedef DataSet::iterator SVF::MutableIncDFPTData< Key, KeySet, Data, DataSet >::DataIter |
Definition at line 695 of file MutablePointsToDS.h.
typedef BaseDFPTData::LocID SVF::MutableIncDFPTData< Key, KeySet, Data, DataSet >::LocID |
Definition at line 691 of file MutablePointsToDS.h.
typedef BasePTData::PTDataTy SVF::MutableIncDFPTData< Key, KeySet, Data, DataSet >::PTDataTy |
Definition at line 689 of file MutablePointsToDS.h.
typedef UpdatedVarMap::const_iterator SVF::MutableIncDFPTData< Key, KeySet, Data, DataSet >::UpdatedVarconstIter |
Definition at line 694 of file MutablePointsToDS.h.
typedef Map<LocID, DataSet> SVF::MutableIncDFPTData< Key, KeySet, Data, DataSet >::UpdatedVarMap |
for propagating only newly added variable in IN/OUT set
Definition at line 692 of file MutablePointsToDS.h.
typedef UpdatedVarMap::iterator SVF::MutableIncDFPTData< Key, KeySet, Data, DataSet >::UpdatedVarMapIter |
Definition at line 693 of file MutablePointsToDS.h.
|
inline |
Constructor.
Definition at line 703 of file MutablePointsToDS.h.
|
inlinevirtual |
Definition at line 705 of file MutablePointsToDS.h.
|
inlinestatic |
Methods to support type inquiry through isa, cast, and dyn_cast:
Definition at line 818 of file MutablePointsToDS.h.
|
inlinestatic |
Definition at line 823 of file MutablePointsToDS.h.
|
inlineoverridevirtual |
Reimplemented from SVF::MutableDFPTData< Key, KeySet, Data, DataSet >.
Definition at line 803 of file MutablePointsToDS.h.
|
inlineprivate |
Get all var which have new pts information in loc's IN set.
Definition at line 852 of file MutablePointsToDS.h.
|
inlineprivate |
Get all var which have new pts information in loc's OUT set.
Definition at line 881 of file MutablePointsToDS.h.
|
inlineprivate |
Remove var from loc's IN updated set.
Definition at line 837 of file MutablePointsToDS.h.
|
inlineprivate |
|
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 832 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 861 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 753 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 743 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 763 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 793 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 707 of file MutablePointsToDS.h.
|
inlineoverridevirtual |
Union (IN[dstLoc:dstVar], OUT[srcLoc:srcVar]).
Reimplemented from SVF::MutableDFPTData< Key, KeySet, Data, DataSet >.
Definition at line 718 of file MutablePointsToDS.h.
|
inlineoverridevirtual |
Union (OUT[dstLoc:dstVar], IN[srcLoc:srcVar]).
Reimplemented from SVF::MutableDFPTData< Key, KeySet, Data, DataSet >.
Definition at line 729 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 783 of file MutablePointsToDS.h.
|
inlineprivate |
|
inlineprivate |
Return TRUE if var has new pts in loc's OUT set.
Definition at line 873 of file MutablePointsToDS.h.
|
private |
Definition at line 699 of file MutablePointsToDS.h.
|
private |
Definition at line 698 of file MutablePointsToDS.h.