diff options
author | Carlo Zancanaro <carlo@carlo-laptop> | 2012-10-30 20:56:38 +1100 |
---|---|---|
committer | Carlo Zancanaro <carlo@carlo-laptop> | 2012-10-30 20:56:38 +1100 |
commit | 6a4786bde976e9a023c7f65a395384d214c5102c (patch) | |
tree | f3dd303f21dfa0be269a932dd05438041a290f27 /clang/lib | |
parent | ff2030f3a19926334fbe3a043c5f88622c17c2f8 (diff) | |
parent | 95b82ea3830c3a34455323167894647e3aa773a6 (diff) |
Merge branch 'master' of ssh://bitbucket.org/czan/honours
Conflicts:
impl/test/run
Diffstat (limited to 'clang/lib')
-rw-r--r-- | clang/lib/Analysis/Interval.cpp | 42 |
1 files changed, 29 insertions, 13 deletions
diff --git a/clang/lib/Analysis/Interval.cpp b/clang/lib/Analysis/Interval.cpp index d005048..ac96107 100644 --- a/clang/lib/Analysis/Interval.cpp +++ b/clang/lib/Analysis/Interval.cpp @@ -702,24 +702,40 @@ void IntervalAnalysis::runOnAllBlocks() { } } + std::vector<EqnExpr*> a; + + a.push_back(&system.constant(-infinity<ZBar>())); + a.push_back(&system.constant(0)); + system[system.variable("x")] = &system.maxExpression(a); + a.clear(); + + system.variable("y"); + + a.push_back(&system.variable("x")); + a.push_back(&system.variable("z")); + EqnExpr* minExpr = &system.expression(new Maximum<ZBar>(), a); + a.clear(); + + a.push_back(&system.constant(-infinity<ZBar>())); + a.push_back(minExpr); + system[system.variable("y")] = &system.maxExpression(a); + a.clear(); + + a.push_back(&system.constant(-infinity<ZBar>())); + a.push_back(&system.variable("y")); + system[system.variable("z")] = &system.maxExpression(a); + + llvm::errs() << toString(system) << "\n"; + system.indexMaxExpressions(); + DynamicMaxStrategy<ZBar> strategy(system); + DynamicVariableAssignment<ZBar> rho(system, strategy); + strategy.setRho(rho); - IdMap<EqnVar,ZBar> result = solve_for(system); for (unsigned int i = 0, size = system.variableCount(); i < size; ++i) { - EqnVar& var = system.variable(i); - cout << var.name() << " = " << result[var] << endl; - } - - /* - DynamicMaxStrategy<ZBar> strategy(system); - DynamicVariableAssignment<ZBar> rho(system, strategy); - strategy.setRho(rho); - - for (unsigned int i = 0, size = system.variableCount(); i < size; ++i) { EqnVar& var = system.variable(size - i - 1); llvm::errs() << toString(var.name()) << " = " << toString(rho[var]) << "\n"; - } - */ + } } |