Static Value-Flow Analysis
Loading...
Searching...
No Matches
Public Types | Public Member Functions | Private Member Functions | Private Attributes | List of all members
SVF::MutableIncDFPTData< Key, KeySet, Data, DataSet > Class Template Reference

Incremental version of the mutable data-flow points-to data structure. More...

#include <MutablePointsToDS.h>

Inheritance diagram for SVF::MutableIncDFPTData< Key, KeySet, Data, DataSet >:
SVF::MutableDFPTData< Key, KeySet, Data, DataSet > SVF::DFPTData< Key, KeySet, Data, DataSet > SVF::PTData< Key, KeySet, Data, DataSet >

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
 
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, PtsMapDFPtsMap
 Data-flow point-to map.
 
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.
 
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]).
 
virtual bool updateDFOutFromIn (LocID srcLoc, const Key &srcVar, LocID dstLoc, const Key &dstVar) override
 Union (OUT[dstLoc:dstVar], IN[srcLoc:srcVar]).
 
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.
 
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.
 
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).
 
virtual bool updateTLVPts (LocID srcLoc, const Key &srcVar, const Key &dstVar) override
 Update points-to set of top-level pointers with IN[srcLoc:srcVar].
 
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.
 
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.
 
virtual ~MutableDFPTData ()
 
virtual const PtsMapgetPtsMap () const
 
virtual void clear () override
 Clears all points-to sets as if nothing is stored.
 
virtual const DataSet & getPts (const Key &var) override
 Get points-to set of var.
 
virtual const KeySetgetRevPts (const Data &datum) override
 Get reverse points-to set of a datum.
 
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, unsignedgetAllPts (bool liveOnly) const override
 
const PtsMapgetDFInPtsMap (LocID loc)
 
const PtsMapgetDFOutPtsMap (LocID loc)
 
const DFPtsMapgetDFIn ()
 
const DFPtsMapgetDFOut ()
 
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).
 
virtual bool unionPts (const Key &dstKey, const DataSet &srcDataSet) override
 Performs pts(dstVar) = pts(dstVar) U srcDataSet.
 
virtual void clearPts (const Key &var, const Data &element) override
 Clears element from the points-to set of var.
 
virtual void clearFullPts (const Key &var) override
 Fully clears the points-to set of var.
 
virtual void remapAllPts (void) override
 Remaps all points-to sets to use the current mapping.
 
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.
 
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.
 
virtual bool addPts (const Key &var, const Data &element)=0
 Adds element to the points-to set associated with var.
 

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.
 
void removeVarFromDFInUpdatedSet (LocID loc, const Key &var)
 Remove var from loc's IN updated set.
 
bool varHasNewDFInPts (LocID loc, const Key &var)
 Return TRUE if var has new pts in loc's IN set.
 
const DataSet & getDFInUpdatedVar (LocID loc)
 Get all var which have new pts information in loc's IN set.
 
void setVarDFOutSetUpdated (LocID loc, const Key &var)
 Handle address-taken variables whose OUT pts changed.
 
void removeVarFromDFOutUpdatedSet (LocID loc, const Key &var)
 Remove var from loc's OUT updated set.
 
bool varHasNewDFOutPts (LocID loc, const Key &var)
 Return TRUE if var has new pts in loc's OUT set.
 
const DataSet & getDFOutUpdatedVar (LocID loc)
 Get all var which have new pts information in loc's OUT set.
 

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.
 
DFPtsMap dfOutPtsMap
 Data-flow OUT set.
 
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.
 
PTDataTy ptdTy
 

Detailed Description

template<typename Key, typename KeySet, typename Data, typename DataSet>
class SVF::MutableIncDFPTData< Key, KeySet, Data, DataSet >

Incremental version of the mutable data-flow points-to data structure.

Definition at line 682 of file MutablePointsToDS.h.

Member Typedef Documentation

◆ BaseDFPTData

template<typename Key , typename KeySet , typename Data , typename DataSet >
typedef DFPTData<Key, KeySet, Data, DataSet> SVF::MutableIncDFPTData< Key, KeySet, Data, DataSet >::BaseDFPTData

Definition at line 687 of file MutablePointsToDS.h.

◆ BaseMutDFPTData

template<typename Key , typename KeySet , typename Data , typename DataSet >
typedef MutableDFPTData<Key, KeySet, Data, DataSet> SVF::MutableIncDFPTData< Key, KeySet, Data, DataSet >::BaseMutDFPTData

Definition at line 688 of file MutablePointsToDS.h.

◆ BaseMutPTData

template<typename Key , typename KeySet , typename Data , typename DataSet >
typedef MutablePTData<Key, KeySet, Data, DataSet> SVF::MutableIncDFPTData< Key, KeySet, Data, DataSet >::BaseMutPTData

Definition at line 686 of file MutablePointsToDS.h.

◆ BasePTData

template<typename Key , typename KeySet , typename Data , typename DataSet >
typedef PTData<Key, KeySet, Data, DataSet> SVF::MutableIncDFPTData< Key, KeySet, Data, DataSet >::BasePTData

Definition at line 685 of file MutablePointsToDS.h.

◆ DataIter

template<typename Key , typename KeySet , typename Data , typename DataSet >
typedef DataSet::iterator SVF::MutableIncDFPTData< Key, KeySet, Data, DataSet >::DataIter

Definition at line 695 of file MutablePointsToDS.h.

◆ LocID

Definition at line 691 of file MutablePointsToDS.h.

◆ PTDataTy

template<typename Key , typename KeySet , typename Data , typename DataSet >
typedef BasePTData::PTDataTy SVF::MutableIncDFPTData< Key, KeySet, Data, DataSet >::PTDataTy

Definition at line 689 of file MutablePointsToDS.h.

◆ UpdatedVarconstIter

template<typename Key , typename KeySet , typename Data , typename DataSet >
typedef UpdatedVarMap::const_iterator SVF::MutableIncDFPTData< Key, KeySet, Data, DataSet >::UpdatedVarconstIter

Definition at line 694 of file MutablePointsToDS.h.

◆ UpdatedVarMap

template<typename Key , typename KeySet , typename Data , typename DataSet >
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.

◆ UpdatedVarMapIter

template<typename Key , typename KeySet , typename Data , typename DataSet >
typedef UpdatedVarMap::iterator SVF::MutableIncDFPTData< Key, KeySet, Data, DataSet >::UpdatedVarMapIter

Definition at line 693 of file MutablePointsToDS.h.

Constructor & Destructor Documentation

◆ MutableIncDFPTData()

template<typename Key , typename KeySet , typename Data , typename DataSet >
SVF::MutableIncDFPTData< Key, KeySet, Data, DataSet >::MutableIncDFPTData ( bool  reversePT = true,
PTDataTy  ty = BasePTData::MutIncDataFlow 
)
inline

Constructor.

Definition at line 703 of file MutablePointsToDS.h.

MutableDFPTData< Key, KeySet, Data, DataSet > BaseMutDFPTData
llvm::IRBuilder IRBuilder
Definition BasicTypes.h:74

◆ ~MutableIncDFPTData()

template<typename Key , typename KeySet , typename Data , typename DataSet >
virtual SVF::MutableIncDFPTData< Key, KeySet, Data, DataSet >::~MutableIncDFPTData ( )
inlinevirtual

Definition at line 705 of file MutablePointsToDS.h.

705{ }

Member Function Documentation

◆ classof() [1/2]

template<typename Key , typename KeySet , typename Data , typename DataSet >
static bool SVF::MutableIncDFPTData< Key, KeySet, Data, DataSet >::classof ( const MutableIncDFPTData< Key, KeySet, Data, DataSet > *  )
inlinestatic

Methods to support type inquiry through isa, cast, and dyn_cast:

Definition at line 818 of file MutablePointsToDS.h.

819 {
820 return true;
821 }

◆ classof() [2/2]

template<typename Key , typename KeySet , typename Data , typename DataSet >
static bool SVF::MutableIncDFPTData< Key, KeySet, Data, DataSet >::classof ( const PTData< Key, KeySet, Data, DataSet > *  ptd)
inlinestatic

Definition at line 823 of file MutablePointsToDS.h.

824 {
825 return ptd->getPTDTY() == BasePTData::MutIncDataFlow;
826 }

◆ clearAllDFOutUpdatedVar()

template<typename Key , typename KeySet , typename Data , typename DataSet >
virtual void SVF::MutableIncDFPTData< Key, KeySet, Data, DataSet >::clearAllDFOutUpdatedVar ( LocID  loc)
inlineoverridevirtual

Reimplemented from SVF::MutableDFPTData< Key, KeySet, Data, DataSet >.

Definition at line 803 of file MutablePointsToDS.h.

804 {
805 if (this->hasDFOutSet(loc))
806 {
807 DataSet pts = getDFOutUpdatedVar(loc);
808 for (DataIter ptsIt = pts.begin(), ptsEit = pts.end(); ptsIt != ptsEit; ++ptsIt)
809 {
810 const Key var = *ptsIt;
812 }
813 }
814 }
virtual bool hasDFOutSet(LocID loc) const override
const DataSet & getDFOutUpdatedVar(LocID loc)
Get all var which have new pts information in loc's OUT set.
void removeVarFromDFOutUpdatedSet(LocID loc, const Key &var)
Remove var from loc's OUT updated set.

◆ getDFInUpdatedVar()

template<typename Key , typename KeySet , typename Data , typename DataSet >
const DataSet & SVF::MutableIncDFPTData< Key, KeySet, Data, DataSet >::getDFInUpdatedVar ( LocID  loc)
inlineprivate

Get all var which have new pts information in loc's IN set.

Definition at line 852 of file MutablePointsToDS.h.

853 {
854 return inUpdatedVarMap[loc];
855 }

◆ getDFOutUpdatedVar()

template<typename Key , typename KeySet , typename Data , typename DataSet >
const DataSet & SVF::MutableIncDFPTData< Key, KeySet, Data, DataSet >::getDFOutUpdatedVar ( LocID  loc)
inlineprivate

Get all var which have new pts information in loc's OUT set.

Definition at line 881 of file MutablePointsToDS.h.

882 {
883 return outUpdatedVarMap[loc];
884 }

◆ removeVarFromDFInUpdatedSet()

template<typename Key , typename KeySet , typename Data , typename DataSet >
void SVF::MutableIncDFPTData< Key, KeySet, Data, DataSet >::removeVarFromDFInUpdatedSet ( LocID  loc,
const Key var 
)
inlineprivate

Remove var from loc's IN updated set.

Definition at line 837 of file MutablePointsToDS.h.

838 {
840 if (it != inUpdatedVarMap.end())
841 it->second.reset(var);
842 }
UpdatedVarMap::iterator UpdatedVarMapIter

◆ removeVarFromDFOutUpdatedSet()

template<typename Key , typename KeySet , typename Data , typename DataSet >
void SVF::MutableIncDFPTData< Key, KeySet, Data, DataSet >::removeVarFromDFOutUpdatedSet ( LocID  loc,
const Key var 
)
inlineprivate

Remove var from loc's OUT updated set.

Definition at line 866 of file MutablePointsToDS.h.

867 {
869 if (it != outUpdatedVarMap.end())
870 it->second.reset(var);
871 }

◆ setVarDFInSetUpdated()

template<typename Key , typename KeySet , typename Data , typename DataSet >
void SVF::MutableIncDFPTData< Key, KeySet, Data, DataSet >::setVarDFInSetUpdated ( LocID  loc,
const Key var 
)
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.

833 {
834 inUpdatedVarMap[loc].set(var);
835 }

◆ setVarDFOutSetUpdated()

template<typename Key , typename KeySet , typename Data , typename DataSet >
void SVF::MutableIncDFPTData< Key, KeySet, Data, DataSet >::setVarDFOutSetUpdated ( LocID  loc,
const Key var 
)
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.

862 {
864 }

◆ updateAllDFInFromIn()

template<typename Key , typename KeySet , typename Data , typename DataSet >
virtual bool SVF::MutableIncDFPTData< Key, KeySet, Data, DataSet >::updateAllDFInFromIn ( LocID  srcLoc,
const Key srcVar,
LocID  dstLoc,
const Key dstVar 
)
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.

754 {
756 {
758 return true;
759 }
760 return false;
761 }
virtual DataSet & getDFInPtsSet(LocID loc, const Key &var) override
virtual bool unionPts(const Key &dstKey, const Key &srcKey) override
Performs pts(dstVar) = pts(dstVar) U pts(srcVar).
void setVarDFInSetUpdated(LocID loc, const Key &var)
Handle address-taken variables whose IN pts changed.

◆ updateAllDFInFromOut()

template<typename Key , typename KeySet , typename Data , typename DataSet >
virtual bool SVF::MutableIncDFPTData< Key, KeySet, Data, DataSet >::updateAllDFInFromOut ( LocID  srcLoc,
const Key srcVar,
LocID  dstLoc,
const Key dstVar 
)
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.

744 {
746 {
748 return true;
749 }
750 return false;
751 }
virtual DataSet & getDFOutPtsSet(LocID loc, const Key &var) override

◆ updateAllDFOutFromIn()

template<typename Key , typename KeySet , typename Data , typename DataSet >
virtual bool SVF::MutableIncDFPTData< Key, KeySet, Data, DataSet >::updateAllDFOutFromIn ( LocID  loc,
const Key singleton,
bool  strongUpdates 
)
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.

764 {
765 bool changed = false;
766 if (this->hasDFInSet(loc))
767 {
769 DataSet pts = getDFInUpdatedVar(loc);
770 for (DataIter ptsIt = pts.begin(), ptsEit = pts.end(); ptsIt != ptsEit; ++ptsIt)
771 {
772 const Key var = *ptsIt;
774 if (strongUpdates && var == singleton)
775 continue;
777 changed = true;
778 }
779 }
780 return changed;
781 }
virtual bool hasDFInSet(LocID loc) const override
const DataSet & getDFInUpdatedVar(LocID loc)
Get all var which have new pts information in loc's IN set.
virtual bool updateDFOutFromIn(LocID srcLoc, const Key &srcVar, LocID dstLoc, const Key &dstVar) override
Union (OUT[dstLoc:dstVar], IN[srcLoc:srcVar]).

◆ updateATVPts()

template<typename Key , typename KeySet , typename Data , typename DataSet >
virtual bool SVF::MutableIncDFPTData< Key, KeySet, Data, DataSet >::updateATVPts ( const Key srcVar,
LocID  dstLoc,
const Key dstVar 
)
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.

794 {
795 if (this->unionPts(this->getDFOutPtsSet(dstLoc, dstVar), this->mutPTData.getPts(srcVar)))
796 {
798 return true;
799 }
800 return false;
801 }
MutablePTData< Key, KeySet, Data, DataSet > mutPTData
void setVarDFOutSetUpdated(LocID loc, const Key &var)
Handle address-taken variables whose OUT pts changed.

◆ updateDFInFromIn()

template<typename Key , typename KeySet , typename Data , typename DataSet >
virtual bool SVF::MutableIncDFPTData< Key, KeySet, Data, DataSet >::updateDFInFromIn ( LocID  srcLoc,
const Key srcVar,
LocID  dstLoc,
const Key dstVar 
)
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.

708 {
711 {
713 return true;
714 }
715 return false;
716 }
bool varHasNewDFInPts(LocID loc, const Key &var)
Return TRUE if var has new pts in loc's IN set.

◆ updateDFInFromOut()

template<typename Key , typename KeySet , typename Data , typename DataSet >
virtual bool SVF::MutableIncDFPTData< Key, KeySet, Data, DataSet >::updateDFInFromOut ( LocID  srcLoc,
const Key srcVar,
LocID  dstLoc,
const Key dstVar 
)
inlineoverridevirtual

Union (IN[dstLoc:dstVar], OUT[srcLoc:srcVar]).

Reimplemented from SVF::MutableDFPTData< Key, KeySet, Data, DataSet >.

Definition at line 718 of file MutablePointsToDS.h.

719 {
722 {
724 return true;
725 }
726 return false;
727 }
bool varHasNewDFOutPts(LocID loc, const Key &var)
Return TRUE if var has new pts in loc's OUT set.

◆ updateDFOutFromIn()

template<typename Key , typename KeySet , typename Data , typename DataSet >
virtual bool SVF::MutableIncDFPTData< Key, KeySet, Data, DataSet >::updateDFOutFromIn ( LocID  srcLoc,
const Key srcVar,
LocID  dstLoc,
const Key dstVar 
)
inlineoverridevirtual

Union (OUT[dstLoc:dstVar], IN[srcLoc:srcVar]).

Reimplemented from SVF::MutableDFPTData< Key, KeySet, Data, DataSet >.

Definition at line 729 of file MutablePointsToDS.h.

730 {
732 {
735 {
737 return true;
738 }
739 }
740 return false;
741 }
void removeVarFromDFInUpdatedSet(LocID loc, const Key &var)
Remove var from loc's IN updated set.

◆ updateTLVPts()

template<typename Key , typename KeySet , typename Data , typename DataSet >
virtual bool SVF::MutableIncDFPTData< Key, KeySet, Data, DataSet >::updateTLVPts ( LocID  srcLoc,
const Key srcVar,
const Key dstVar 
)
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.

784 {
786 {
788 return this->mutPTData.unionPts(dstVar, this->getDFInPtsSet(srcLoc,srcVar));
789 }
790 return false;
791 }

◆ varHasNewDFInPts()

template<typename Key , typename KeySet , typename Data , typename DataSet >
bool SVF::MutableIncDFPTData< Key, KeySet, Data, DataSet >::varHasNewDFInPts ( LocID  loc,
const Key var 
)
inlineprivate

Return TRUE if var has new pts in loc's IN set.

Definition at line 844 of file MutablePointsToDS.h.

845 {
847 if (it != inUpdatedVarMap.end())
848 return it->second.test(var);
849 return false;
850 }

◆ varHasNewDFOutPts()

template<typename Key , typename KeySet , typename Data , typename DataSet >
bool SVF::MutableIncDFPTData< Key, KeySet, Data, DataSet >::varHasNewDFOutPts ( LocID  loc,
const Key var 
)
inlineprivate

Return TRUE if var has new pts in loc's OUT set.

Definition at line 873 of file MutablePointsToDS.h.

874 {
876 if (it != outUpdatedVarMap.end())
877 return it->second.test(var);
878 return false;
879 }

Member Data Documentation

◆ inUpdatedVarMap

template<typename Key , typename KeySet , typename Data , typename DataSet >
UpdatedVarMap SVF::MutableIncDFPTData< Key, KeySet, Data, DataSet >::inUpdatedVarMap
private

Definition at line 699 of file MutablePointsToDS.h.

◆ outUpdatedVarMap

template<typename Key , typename KeySet , typename Data , typename DataSet >
UpdatedVarMap SVF::MutableIncDFPTData< Key, KeySet, Data, DataSet >::outUpdatedVarMap
private

Definition at line 698 of file MutablePointsToDS.h.


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