ROSE  0.11.145.0
Classes | Public Types | Public Member Functions | Static Public Member Functions | Protected Member Functions | Static Protected Member Functions | Protected Attributes | List of all members
ConstrGraph Class Reference

Description

Definition at line 41 of file ConstrGraph.h.

Inheritance diagram for ConstrGraph:
Inheritance graph
[legend]
Collaboration diagram for ConstrGraph:
Collaboration graph
[legend]

Classes

class  geIterator
 
class  leIterator
 
class  NodeDesc
 

Public Types

enum  levels {
  uninitialized = 0,
  bottom,
  constrKnown,
  top
}
 
enum  constrTypes {
  unknown,
  conj,
  negConj,
  inconsistent
}
 

Public Member Functions

 ConstrGraph (const Function &func, const DataflowNode &n, const NodeState &state, LiveDeadVarsAnalysis *ldva, FiniteVarsExprsProductLattice *divL, bool initialized=true, std::string indent="")
 
 ConstrGraph (const Function &func, const DataflowNode &n, const NodeState &state, LiveDeadVarsAnalysis *ldva, const std::map< std::pair< std::string, void * >, FiniteVarsExprsProductLattice * > &divL, bool initialized=true, std::string indent="")
 
 ConstrGraph (const Function &func, const std::set< NodeDesc > &nodes, const NodeState &state, LiveDeadVarsAnalysis *ldva, const std::map< std::pair< std::string, void * >, FiniteVarsExprsProductLattice * > &divL, bool initialized=true, std::string indent="")
 
 ConstrGraph (ConstrGraph &that, bool initialized=true, std::string indent="")
 
 ConstrGraph (const ConstrGraph *that, bool initialized=true, std::string indent="")
 
 ConstrGraph (const std::set< varAffineInequality > &ineqs, const Function &func, const DataflowNode &n, const NodeState &state, LiveDeadVarsAnalysis *ldva, FiniteVarsExprsProductLattice *divL, std::string indent="")
 
 ConstrGraph (const std::set< varAffineInequality > &ineqs, const Function &func, const DataflowNode &n, const NodeState &state, LiveDeadVarsAnalysis *ldva, const std::map< std::pair< std::string, void * >, FiniteVarsExprsProductLattice * > &divL, std::string indent="")
 
void initialize (std::string indent="")
 
void initialize ()
 
FiniteVarsExprsProductLatticegetDivLattice (const varID &var, std::string indent="")
 
std::string DivLattices2Str (std::string indent="")
 
bool addVar (const varID &scalar, std::string indent="")
 
bool removeVar (const varID &scalar, std::string indent="")
 
const varIDSet & getVars () const
 
varIDSet & getVarsMod ()
 
void copy (Lattice *that)
 
Latticecopy () const
 
bool copyFrom (ConstrGraph &that, std::string indent="")
 
bool copyFromReplace (ConstrGraph &that, varID varTo, varID varFrom, std::string indent="")
 
bool copyVar (const ConstrGraph &that, const varID &var)
 
bool copyConstraints (ConstrGraph &that, std::string indent="")
 
bool copyConstraintsReplace (ConstrGraph &that, varID varTo, varID varFrom, std::string indent="")
 
void eraseConstraints (bool noBottomCheck=false, std::string indent="")
 
bool eraseVarConstr (const varID &eraseVar, bool noConsistencyCheck=false, std::string indent="")
 
bool eraseVarConstrNoDiv (const varID &eraseVar, bool noConsistencyCheck=false, std::string indent="")
 
bool eraseVarConstrNoDivVars (const varID &eraseVar, bool noConsistencyCheck=false, std::string indent="")
 
bool replaceVar (const varID &origVar, const varID &newVar, bool noConsistencyCheck=false, std::string indent="")
 
bool copyAnnotVars (std::string srcAnnotName, void *srcAnnotVal, std::string tgtAnnotName, void *tgtAnnotVal, const std::set< std::pair< std::string, void * > > &noCopyAnnots, const std::set< varID > &noCopyVars, std::string indent="")
 
bool mergeAnnotVars (const std::string &finalAnnotName, void *finalAnnotVal, const std::string &remAnnotName, void *remAnnotVal, const std::set< std::pair< std::string, void * > > &noCopyAnnots, const std::set< varID > &noCopyVars, std::string indent="")
 
void remapVars (const std::map< varID, varID > &varNameMap, const Function &newFunc)
 
void incorporateVars (Lattice *that)
 
Latticeproject (SgExpression *expr)
 
bool unProject (SgExpression *expr, Lattice *exprState)
 
ConstrGraphgetProjection (const varIDSet &focusVars, std::string indent="")
 
bool removeVarAnnot (std::string annotName, void *annot, std::string indent="")
 
bool replaceVarAnnot (std::string oldAnnotName, void *oldAnnot, std::string newAnnotName, void *newAnnot, std::string indent="")
 
bool addVarAnnot (std::string tgtAnnotName, void *tgtAnnotVal, std::string newAnnotName, void *newAnnotVal, std::string indent="")
 
bool negate (std::string indent="")
 
bool assign (const varAffineInequality &cond, std::string indent="")
 
bool assign (varID x, varID y, const affineInequality &ineq, std::string indent="")
 
bool assign (varID x, varID y, int a, int b, int c, std::string indent="")
 
bool assignBot (varID var, std::string indent="")
 
bool assignTop (varID var, std::string indent="")
 
bool assertCond (const varAffineInequality &cond, std::string indent="")
 
bool assertCond (const varID &x, const varID &y, const affineInequality &ineq, std::string indent="")
 
bool assertCond (const varID &x, const varID &y, int a, int b, int c, std::string indent="")
 
bool assertEq (const varAffineInequality &cond, std::string indent="")
 
bool assertEq (varID x, varID y, const affineInequality &ineq, std::string indent="")
 
bool assertEq (const varID &x, const varID &y, int a=1, int b=1, int c=0, std::string indent="")
 
affineInequality::signs getVarSign (const varID &var, std::string indent="")
 
bool isEqZero (const varID &var, std::string indent="")
 
bool eqVars (const varID &v1, const varID &v2, int a=1, int b=1, int c=0, std::string indent="")
 
bool eqVars (const varID &v1, const varID &v2, std::string indent="")
 
bool isEqVars (const varID &v1, const varID &v2, int &a, int &b, int &c, std::string indent="")
 
std::map< varID, affineInequalitygetEqVars (varID var, std::string indent="")
 
bool lteVars (const varID &v1, const varID &v2, int a=1, int b=1, int c=0, std::string indent="")
 
bool ltVars (const varID &v1, const varID &v2, int a=1, int b=1, int c=0, std::string indent="")
 
leIterator leBegin (const varID &y)
 
leIterator leEnd ()
 
geIterator geBegin (const varID &y)
 
geIterator geEnd ()
 
bool widenUpdate (InfiniteLattice *that, std::string indent="")
 
bool widenUpdate (InfiniteLattice *that)
 
bool widenUpdateLimitToThat (InfiniteLattice *that, std::string indent="")
 
bool widenUpdate_ex (InfiniteLattice *that_arg, bool limitToThat, std::string indent="")
 
bool meetUpdate (Lattice *that, std::string indent="")
 
bool meetUpdate (Lattice *that)
 
bool meetUpdateLimitToThat (InfiniteLattice *that, std::string indent="")
 
bool meetUpdate_ex (Lattice *that_arg, bool limitToThat, std::string indent="")
 
bool orUpd (LogicalCond &that, std::string indent="")
 
bool orUpd (LogicalCond &that)
 
bool andUpd (LogicalCond &that, std::string indent="")
 
bool andUpd (LogicalCond &that)
 
bool andUpd (ConstrGraph *that, std::string indent="")
 
bool andUpd (ConstrGraph *that)
 
bool OrAndWidenUpdate (ConstrGraph *that, bool meet, bool OR, bool limitToThat, std::string indent="")
 
void OrAndWidenUpdate_XinThisNotThat (bool OR, bool limitToThat, std::map< varID, std::map< varID, affineInequality > >::iterator &itThisX, bool &modified, std::string indent="")
 
void OrAndWidenUpdate_XinThatNotThis (bool OR, bool limitToThat, ConstrGraph *that, std::map< varID, std::map< varID, affineInequality > >::iterator &itThatX, std::map< varID, std::map< varID, affineInequality > > &additionsToThis, bool &modified, std::string indent="")
 
void OrAndWidenUpdate_YinThisNotThat (bool OR, bool limitToThat, std::map< varID, std::map< varID, affineInequality > >::iterator &itThisX, std::map< varID, affineInequality >::iterator &itThisY, bool &modified, std::string indent="")
 
void OrAndWidenUpdate_YinThatNotThis (bool OR, bool limitToThat, std::map< varID, std::map< varID, affineInequality > >::iterator &itThatX, std::map< varID, affineInequality >::iterator &itThatY, std::map< varID, affineInequality > &additionsToThis, bool &modified, std::string indent="")
 
bool transitiveClosure (std::string indent="")
 
bool localTransClosure (const varID &tgtVar, std::string indent="")
 
bool addDivL (FiniteVarsExprsProductLattice *divLattice, std::string annotName, void *annot, std::string indent="")
 
bool containsVar (const varID &var, std::string indent="")
 
affineInequalitygetVal (varID x, varID y, std::string indent="")
 
bool setVal (varID x, varID y, int a, int b, int c, std::string indent="")
 
bool setVal (varID x, varID y, const affineInequality &ineq, std::string indent="")
 
bool setToUninitialized_KeepState (std::string indent="")
 
bool setToBottom (std::string indent="")
 
bool setToConstrKnown (constrTypes ct, bool eraseCurConstr=true, std::string indent="")
 
bool setToInconsistent (std::string indent="")
 
bool setToTop (bool onlyIfNotInit=false, std::string indent="")
 
std::pair< levels, constrTypes > getLevel (bool noConsistencyCheck=false, std::string indent="")
 
bool isSelfConsistent (bool noConsistencyCheck=false, std::string indent="")
 
bool hasConsistentConstraints (bool noConsistencyCheck=false, std::string indent="")
 
bool isMaximalState (bool noConsistencyCheck=false, std::string indent="")
 
std::string str (std::string indent="")
 
void varSetStatusToStream (const std::set< varID > &vars, std::ostringstream &outs, bool &needEndl, std::string indent="")
 
std::string str (std::string indent, bool useIsBottom)
 
std::string toDOT (std::string graphName)
 
std::string toDOT (std::string graphName, std::set< varID > &focusVars)
 
bool operator!= (ConstrGraph &that)
 
bool operator== (ConstrGraph &that)
 
bool operator== (Lattice *that)
 
bool operator<<= (ConstrGraph &that)
 
bool mustOutsideRange (varID x, int b, int c, varID y, std::string indent="")
 
bool mayTrue (std::string indent="")
 
bool mayTrue ()
 
void beginTransaction (std::string indent="")
 
void endTransaction (std::string indent="")
 
- Public Member Functions inherited from InfiniteLattice
bool finiteLattice ()
 Check if this lattice is finite or not.
 
- Public Member Functions inherited from Lattice
bool operator!= (Lattice *that)
 
bool operator== (Lattice &that)
 
bool operator!= (Lattice &that)
 

Static Public Member Functions

static bool varHasAnnot (const varID &var, const std::set< std::pair< std::string, void * > > &annots, std::string indent="")
 
static bool varHasAnnot (const varID &var, std::string annotName, void *annotVal, std::string indent="")
 
static ConstrGraphjoinCG (ConstrGraph *cg1, void *cg1Annot, ConstrGraph *cg2, void *cg2Annot, std::string annotName, const varIDSet &noAnnot, std::string indent="")
 

Protected Member Functions

 ConstrGraph (const Function &func, const DataflowNode &n, const NodeState &state, bool initialized=false, std::string indent="")
 
void initCG (const Function &func, const std::set< NodeDesc > &nodes, bool initialized, std::string indent="")
 
bool diffConstraints (ConstrGraph &that, std::string indent="")
 
bool annotInterestingVar (const varID &var, const std::set< std::pair< std::string, void * > > &noCopyAnnots, const std::set< varID > &noCopyVars, const std::string &annotName, void *annotVal, std::string indent="")
 
bool unionXYsubMap (std::map< varID, affineInequality > &subMap, const varID &y, const affineInequality &ineq, std::string indent="")
 
bool mergeAnnotVarsSubMap (std::map< varID, affineInequality > &subMap, std::string finalAnnotName, void *finalAnnotVal, std::string remAnnotName, void *remAnnotVal, const std::set< std::pair< std::string, void * > > &noCopyAnnots, const std::set< varID > &noCopyVars, std::string indent="")
 
bool mergeAnnotVarsSet (std::set< varID > varsSet, std::string finalAnnotName, void *finalAnnotVal, std::string remAnnotName, void *remAnnotVal, const std::set< std::pair< std::string, void * > > &noCopyAnnots, const std::set< varID > &noCopyVars, std::string indent="")
 
bool transitiveClosureDiv (std::string indent="")
 
void transitiveClosureY (const varID &x, const varID &y, bool &modified, int &numSteps, int &numInfers, bool &iterModified, std::string indent="")
 
void transitiveClosureZ (const varID &x, const varID &y, const varID &z, bool &modified, int &numSteps, int &numInfers, bool &iterModified, std::string indent="")
 
bool checkSelfConsistency (std::string indent="")
 

Static Protected Member Functions

static void joinCG_copyState (ConstrGraph *tgtCG, ConstrGraph *srcCG, void *annot, std::string annotName, const varIDSet &noAnnot, std::string indent="")
 

Protected Attributes

levels level
 
constrTypes constrType
 
const Functionfunc
 
const NodeStatestate
 
std::map< varID, std::map< varID, affineInequality > > vars2Value
 
LiveDeadVarsAnalysisldva
 
bool inTransaction
 
std::map< std::pair< std::string, void * >, FiniteVarsExprsProductLattice * > divL
 
std::set< varIDvars
 
bool constrChanged
 
std::set< varIDmodifiedVars
 

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