ROSE
0.11.96.11
|
Definition at line 41 of file ConstrGraph.h.
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 () |
FiniteVarsExprsProductLattice * | getDivLattice (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) |
Lattice * | copy () 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) |
Lattice * | project (SgExpression *expr) |
bool | unProject (SgExpression *expr, Lattice *exprState) |
ConstrGraph * | getProjection (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, affineInequality > | getEqVars (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="") |
affineInequality * | getVal (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 ConstrGraph * | joinCG (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 Function & | func |
const NodeState & | state |
std::map< varID, std::map< varID, affineInequality > > | vars2Value |
LiveDeadVarsAnalysis * | ldva |
bool | inTransaction |
std::map< std::pair< std::string, void * >, FiniteVarsExprsProductLattice * > | divL |
std::set< varID > | vars |
bool | constrChanged |
std::set< varID > | modifiedVars |