ROSE  0.9.6a
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
ConstrGraph Class Reference

#include <ConstrGraph.h>

Inheritance diagram for ConstrGraph:
Collaboration diagram for ConstrGraph:

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="")
 
 ~ConstrGraph ()
 
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 varIDSetgetVars () const
 
varIDSetgetVarsMod ()
 
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, constrTypesgetLevel (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. More...
 
- Public Member Functions inherited from Lattice
bool operator!= (Lattice *that)
 
bool operator== (Lattice &that)
 
bool operator!= (Lattice &that)
 
- Public Member Functions inherited from printable
virtual ~printable ()
 
- Public Member Functions inherited from dottable
virtual ~dottable ()
 

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
 

Detailed Description

Definition at line 38 of file ConstrGraph.h.

Member Enumeration Documentation

Enumerator
uninitialized 
bottom 
constrKnown 
top 

Definition at line 42 of file ConstrGraph.h.

Enumerator
unknown 
conj 
negConj 
inconsistent 

Definition at line 63 of file ConstrGraph.h.

Constructor & Destructor Documentation

ConstrGraph::ConstrGraph ( const Function func,
const DataflowNode n,
const NodeState state,
bool  initialized = false,
std::string  indent = "" 
)
protected
ConstrGraph::ConstrGraph ( const Function func,
const DataflowNode n,
const NodeState state,
LiveDeadVarsAnalysis ldva,
FiniteVarsExprsProductLattice divL,
bool  initialized = true,
std::string  indent = "" 
)
ConstrGraph::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::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 ( ConstrGraph that,
bool  initialized = true,
std::string  indent = "" 
)
ConstrGraph::ConstrGraph ( const ConstrGraph that,
bool  initialized = true,
std::string  indent = "" 
)
ConstrGraph::ConstrGraph ( const std::set< varAffineInequality > &  ineqs,
const Function func,
const DataflowNode n,
const NodeState state,
LiveDeadVarsAnalysis ldva,
FiniteVarsExprsProductLattice divL,
std::string  indent = "" 
)
ConstrGraph::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 = "" 
)
ConstrGraph::~ConstrGraph ( )

Member Function Documentation

void ConstrGraph::initCG ( const Function func,
const std::set< NodeDesc > &  nodes,
bool  initialized,
std::string  indent = "" 
)
protected
void ConstrGraph::initialize ( std::string  indent = "")
void ConstrGraph::initialize ( )
inlinevirtual

Implements Lattice.

Definition at line 204 of file ConstrGraph.h.

FiniteVarsExprsProductLattice* ConstrGraph::getDivLattice ( const varID var,
std::string  indent = "" 
)
std::string ConstrGraph::DivLattices2Str ( std::string  indent = "")
bool ConstrGraph::addVar ( const varID scalar,
std::string  indent = "" 
)
bool ConstrGraph::removeVar ( const varID scalar,
std::string  indent = "" 
)
const varIDSet& ConstrGraph::getVars ( ) const
varIDSet& ConstrGraph::getVarsMod ( )
void ConstrGraph::copy ( Lattice that)
virtual

Implements Lattice.

Lattice* ConstrGraph::copy ( ) const
virtual

Implements Lattice.

Referenced by project().

bool ConstrGraph::copyFrom ( ConstrGraph that,
std::string  indent = "" 
)
bool ConstrGraph::copyFromReplace ( ConstrGraph that,
varID  varTo,
varID  varFrom,
std::string  indent = "" 
)
bool ConstrGraph::copyVar ( const ConstrGraph that,
const varID var 
)
bool ConstrGraph::diffConstraints ( ConstrGraph that,
std::string  indent = "" 
)
protected
bool ConstrGraph::copyConstraints ( ConstrGraph that,
std::string  indent = "" 
)
bool ConstrGraph::copyConstraintsReplace ( ConstrGraph that,
varID  varTo,
varID  varFrom,
std::string  indent = "" 
)
void ConstrGraph::eraseConstraints ( bool  noBottomCheck = false,
std::string  indent = "" 
)
bool ConstrGraph::eraseVarConstr ( const varID eraseVar,
bool  noConsistencyCheck = false,
std::string  indent = "" 
)
bool ConstrGraph::eraseVarConstrNoDiv ( const varID eraseVar,
bool  noConsistencyCheck = false,
std::string  indent = "" 
)
bool ConstrGraph::eraseVarConstrNoDivVars ( const varID eraseVar,
bool  noConsistencyCheck = false,
std::string  indent = "" 
)
bool ConstrGraph::replaceVar ( const varID origVar,
const varID newVar,
bool  noConsistencyCheck = false,
std::string  indent = "" 
)
bool ConstrGraph::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 = "" 
)
protected
bool ConstrGraph::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 ConstrGraph::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 = "" 
)
bool ConstrGraph::unionXYsubMap ( std::map< varID, affineInequality > &  subMap,
const varID y,
const affineInequality ineq,
std::string  indent = "" 
)
protected
bool ConstrGraph::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 = "" 
)
protected
bool ConstrGraph::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 = "" 
)
protected
static bool ConstrGraph::varHasAnnot ( const varID var,
const std::set< std::pair< std::string, void * > > &  annots,
std::string  indent = "" 
)
static
static bool ConstrGraph::varHasAnnot ( const varID var,
std::string  annotName,
void *  annotVal,
std::string  indent = "" 
)
static
void ConstrGraph::remapVars ( const std::map< varID, varID > &  varNameMap,
const Function newFunc 
)
inlinevirtual

Reimplemented from Lattice.

Definition at line 404 of file ConstrGraph.h.

void ConstrGraph::incorporateVars ( Lattice that)
inlinevirtual

Reimplemented from Lattice.

Definition at line 411 of file ConstrGraph.h.

Lattice* ConstrGraph::project ( SgExpression expr)
inlinevirtual

Reimplemented from Lattice.

Definition at line 421 of file ConstrGraph.h.

References copy().

bool ConstrGraph::unProject ( SgExpression expr,
Lattice exprState 
)
inlinevirtual

Reimplemented from Lattice.

Definition at line 428 of file ConstrGraph.h.

References meetUpdate().

ConstrGraph* ConstrGraph::getProjection ( const varIDSet focusVars,
std::string  indent = "" 
)
static ConstrGraph* ConstrGraph::joinCG ( ConstrGraph cg1,
void *  cg1Annot,
ConstrGraph cg2,
void *  cg2Annot,
std::string  annotName,
const varIDSet noAnnot,
std::string  indent = "" 
)
static
static void ConstrGraph::joinCG_copyState ( ConstrGraph tgtCG,
ConstrGraph srcCG,
void *  annot,
std::string  annotName,
const varIDSet noAnnot,
std::string  indent = "" 
)
staticprotected
bool ConstrGraph::removeVarAnnot ( std::string  annotName,
void *  annot,
std::string  indent = "" 
)
bool ConstrGraph::replaceVarAnnot ( std::string  oldAnnotName,
void *  oldAnnot,
std::string  newAnnotName,
void *  newAnnot,
std::string  indent = "" 
)
bool ConstrGraph::addVarAnnot ( std::string  tgtAnnotName,
void *  tgtAnnotVal,
std::string  newAnnotName,
void *  newAnnotVal,
std::string  indent = "" 
)
bool ConstrGraph::negate ( std::string  indent = "")
bool ConstrGraph::assign ( const varAffineInequality cond,
std::string  indent = "" 
)
bool ConstrGraph::assign ( varID  x,
varID  y,
const affineInequality ineq,
std::string  indent = "" 
)
bool ConstrGraph::assign ( varID  x,
varID  y,
int  a,
int  b,
int  c,
std::string  indent = "" 
)
bool ConstrGraph::assignBot ( varID  var,
std::string  indent = "" 
)
bool ConstrGraph::assignTop ( varID  var,
std::string  indent = "" 
)
bool ConstrGraph::assertCond ( const varAffineInequality cond,
std::string  indent = "" 
)
bool ConstrGraph::assertCond ( const varID x,
const varID y,
const affineInequality ineq,
std::string  indent = "" 
)
bool ConstrGraph::assertCond ( const varID x,
const varID y,
int  a,
int  b,
int  c,
std::string  indent = "" 
)
bool ConstrGraph::assertEq ( const varAffineInequality cond,
std::string  indent = "" 
)
bool ConstrGraph::assertEq ( varID  x,
varID  y,
const affineInequality ineq,
std::string  indent = "" 
)
bool ConstrGraph::assertEq ( const varID x,
const varID y,
int  a = 1,
int  b = 1,
int  c = 0,
std::string  indent = "" 
)
affineInequality::signs ConstrGraph::getVarSign ( const varID var,
std::string  indent = "" 
)
bool ConstrGraph::isEqZero ( const varID var,
std::string  indent = "" 
)
bool ConstrGraph::eqVars ( const varID v1,
const varID v2,
int  a = 1,
int  b = 1,
int  c = 0,
std::string  indent = "" 
)

Referenced by eqVars().

bool ConstrGraph::eqVars ( const varID v1,
const varID v2,
std::string  indent = "" 
)
inline

Definition at line 527 of file ConstrGraph.h.

References eqVars().

bool ConstrGraph::isEqVars ( const varID v1,
const varID v2,
int &  a,
int &  b,
int &  c,
std::string  indent = "" 
)
std::map<varID, affineInequality> ConstrGraph::getEqVars ( varID  var,
std::string  indent = "" 
)
bool ConstrGraph::lteVars ( const varID v1,
const varID v2,
int  a = 1,
int  b = 1,
int  c = 0,
std::string  indent = "" 
)
bool ConstrGraph::ltVars ( const varID v1,
const varID v2,
int  a = 1,
int  b = 1,
int  c = 0,
std::string  indent = "" 
)
leIterator ConstrGraph::leBegin ( const varID y)
leIterator ConstrGraph::leEnd ( )
geIterator ConstrGraph::geBegin ( const varID y)
geIterator ConstrGraph::geEnd ( )
bool ConstrGraph::widenUpdate ( InfiniteLattice that,
std::string  indent = "" 
)
bool ConstrGraph::widenUpdate ( InfiniteLattice that)
inlinevirtual

Implements InfiniteLattice.

Definition at line 620 of file ConstrGraph.h.

References widenUpdate().

Referenced by widenUpdate().

bool ConstrGraph::widenUpdateLimitToThat ( InfiniteLattice that,
std::string  indent = "" 
)
bool ConstrGraph::widenUpdate_ex ( InfiniteLattice that_arg,
bool  limitToThat,
std::string  indent = "" 
)
bool ConstrGraph::meetUpdate ( Lattice that,
std::string  indent = "" 
)

Referenced by unProject().

bool ConstrGraph::meetUpdate ( Lattice that)
inlinevirtual

Implements Lattice.

Definition at line 636 of file ConstrGraph.h.

References meetUpdate().

Referenced by meetUpdate().

bool ConstrGraph::meetUpdateLimitToThat ( InfiniteLattice that,
std::string  indent = "" 
)
bool ConstrGraph::meetUpdate_ex ( Lattice that_arg,
bool  limitToThat,
std::string  indent = "" 
)
bool ConstrGraph::orUpd ( LogicalCond that,
std::string  indent = "" 
)

Referenced by orUpd().

bool ConstrGraph::orUpd ( LogicalCond that)
inline

Definition at line 648 of file ConstrGraph.h.

References orUpd().

bool ConstrGraph::andUpd ( LogicalCond that,
std::string  indent = "" 
)

Referenced by andUpd().

bool ConstrGraph::andUpd ( LogicalCond that)
inline

Definition at line 653 of file ConstrGraph.h.

References andUpd().

bool ConstrGraph::andUpd ( ConstrGraph that,
std::string  indent = "" 
)
bool ConstrGraph::andUpd ( ConstrGraph that)
inline

Definition at line 657 of file ConstrGraph.h.

References andUpd().

bool ConstrGraph::OrAndWidenUpdate ( ConstrGraph that,
bool  meet,
bool  OR,
bool  limitToThat,
std::string  indent = "" 
)
void ConstrGraph::OrAndWidenUpdate_XinThisNotThat ( bool  OR,
bool  limitToThat,
std::map< varID, std::map< varID, affineInequality > >::iterator itThisX,
bool &  modified,
std::string  indent = "" 
)
void ConstrGraph::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 ConstrGraph::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 ConstrGraph::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 ConstrGraph::transitiveClosure ( std::string  indent = "")
bool ConstrGraph::transitiveClosureDiv ( std::string  indent = "")
protected
void ConstrGraph::transitiveClosureY ( const varID x,
const varID y,
bool &  modified,
int &  numSteps,
int &  numInfers,
bool &  iterModified,
std::string  indent = "" 
)
protected
void ConstrGraph::transitiveClosureZ ( const varID x,
const varID y,
const varID z,
bool &  modified,
int &  numSteps,
int &  numInfers,
bool &  iterModified,
std::string  indent = "" 
)
protected
bool ConstrGraph::localTransClosure ( const varID tgtVar,
std::string  indent = "" 
)
bool ConstrGraph::checkSelfConsistency ( std::string  indent = "")
protected
bool ConstrGraph::addDivL ( FiniteVarsExprsProductLattice divLattice,
std::string  annotName,
void *  annot,
std::string  indent = "" 
)
bool ConstrGraph::containsVar ( const varID var,
std::string  indent = "" 
)
affineInequality* ConstrGraph::getVal ( varID  x,
varID  y,
std::string  indent = "" 
)
bool ConstrGraph::setVal ( varID  x,
varID  y,
int  a,
int  b,
int  c,
std::string  indent = "" 
)
bool ConstrGraph::setVal ( varID  x,
varID  y,
const affineInequality ineq,
std::string  indent = "" 
)
bool ConstrGraph::setToUninitialized_KeepState ( std::string  indent = "")
bool ConstrGraph::setToBottom ( std::string  indent = "")
bool ConstrGraph::setToConstrKnown ( constrTypes  ct,
bool  eraseCurConstr = true,
std::string  indent = "" 
)
bool ConstrGraph::setToInconsistent ( std::string  indent = "")
bool ConstrGraph::setToTop ( bool  onlyIfNotInit = false,
std::string  indent = "" 
)
std::pair<levels, constrTypes> ConstrGraph::getLevel ( bool  noConsistencyCheck = false,
std::string  indent = "" 
)
bool ConstrGraph::isSelfConsistent ( bool  noConsistencyCheck = false,
std::string  indent = "" 
)
bool ConstrGraph::hasConsistentConstraints ( bool  noConsistencyCheck = false,
std::string  indent = "" 
)
bool ConstrGraph::isMaximalState ( bool  noConsistencyCheck = false,
std::string  indent = "" 
)
std::string ConstrGraph::str ( std::string  indent = "")
virtual

Implements printable.

void ConstrGraph::varSetStatusToStream ( const std::set< varID > &  vars,
std::ostringstream &  outs,
bool &  needEndl,
std::string  indent = "" 
)
std::string ConstrGraph::str ( std::string  indent,
bool  useIsBottom 
)
std::string ConstrGraph::toDOT ( std::string  graphName)
virtual

Implements dottable.

std::string ConstrGraph::toDOT ( std::string  graphName,
std::set< varID > &  focusVars 
)
bool ConstrGraph::operator!= ( ConstrGraph that)
bool ConstrGraph::operator== ( ConstrGraph that)
bool ConstrGraph::operator== ( Lattice that)
virtual

Implements Lattice.

bool ConstrGraph::operator<<= ( ConstrGraph that)
bool ConstrGraph::mustOutsideRange ( varID  x,
int  b,
int  c,
varID  y,
std::string  indent = "" 
)
bool ConstrGraph::mayTrue ( std::string  indent = "")
bool ConstrGraph::mayTrue ( )
inline

Definition at line 890 of file ConstrGraph.h.

References mayTrue().

Referenced by mayTrue().

void ConstrGraph::beginTransaction ( std::string  indent = "")
void ConstrGraph::endTransaction ( std::string  indent = "")

Member Data Documentation

levels ConstrGraph::level
protected

Definition at line 60 of file ConstrGraph.h.

constrTypes ConstrGraph::constrType
protected

Definition at line 74 of file ConstrGraph.h.

const Function& ConstrGraph::func
protected

Definition at line 78 of file ConstrGraph.h.

const NodeState& ConstrGraph::state
protected

Definition at line 80 of file ConstrGraph.h.

std::map<varID, std::map<varID, affineInequality> > ConstrGraph::vars2Value
protected

Definition at line 84 of file ConstrGraph.h.

LiveDeadVarsAnalysis* ConstrGraph::ldva
protected

Definition at line 88 of file ConstrGraph.h.

bool ConstrGraph::inTransaction
protected

Definition at line 93 of file ConstrGraph.h.

std::map<std::pair<std::string, void*>, FiniteVarsExprsProductLattice*> ConstrGraph::divL
protected

Definition at line 100 of file ConstrGraph.h.

std::set<varID> ConstrGraph::vars
protected

Definition at line 110 of file ConstrGraph.h.

bool ConstrGraph::constrChanged
protected

Definition at line 117 of file ConstrGraph.h.

std::set<varID> ConstrGraph::modifiedVars
protected

Definition at line 121 of file ConstrGraph.h.


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