1 #ifndef SEQUENCE_STRUCT_ANALYSIS_H
2 #define SEQUENCE_STRUCT_ANALYSIS_H
4 #include "genericDataflowCommon.h"
5 #include "VirtualCFGIterator.h"
7 #include "CallGraphTraverse.h"
8 #include "analysisCommon.h"
11 #include "latticeFull.h"
12 #include "divAnalysis.h"
13 #include "ConstrGraph.h"
14 #include "ConstrGraphAnalysis.h"
15 #include "liveDeadVarAnalysis.h"
16 #include "dominatorAnalysis.h"
17 #include "printAnalysisStates.h"
19 extern int sequenceStructAnalysisDebugLevel;
77 void init(
string indent=
"");
106 void remapVars(
const map<varID, varID>& varNameMap,
const Function& newFunc);
113 void incorporateVars(
Lattice* that_arg);
134 bool meetUpdate(
Lattice* that_arg);
146 bool setToStartKnown(
varID vInit,
int initOffset);
150 bool setToStartKnown(
int initVal);
154 bool setToSeqKnown(
varID vFin,
int finOffset,
int stride);
157 seqLevel getLevel()
const;
159 bool operator==(
Lattice* that);
164 string str(
string indent=
"");
170 static map<varID, Lattice*> constVars;
171 static bool constVars_init;
188 this->divAnalysis = divAnalysis;
195 vector<Lattice*>& initLattices, vector<NodeFact*>& initFacts);
This class represents the notion of an expression. Expressions are derived from SgLocatedNodes, since similar to statement, expressions have a concrete location within the user's source code.