Module: ppl/ppl Branch: master Commit: fa6ebeae31b46566555455e579fdacd213340e99 URL: http://www.cs.unipr.it/git/gitweb.cgi?p=ppl/ppl.git;a=commit;h=fa6ebeae31b46... Author: Roberto Bagnara <bagnara@cs.unipr.it> Date: Thu May 14 21:53:39 2009 +0200 Last commit partly undone. --- src/wrap_assign.hh | 13 +++++++------ 1 files changed, 7 insertions(+), 6 deletions(-) diff --git a/src/wrap_assign.hh b/src/wrap_assign.hh index 8e98b82..3ba5b96 100644 --- a/src/wrap_assign.hh +++ b/src/wrap_assign.hh @@ -68,7 +68,7 @@ wrap_assign_rec(PSET& dest, vars_end = vars.end(); i != vars.end(); ++i) { const Variable x = Variable(*i); p.refine_with_constraint(min_value <= x); - p.refine_with_constraint(x < max_value); + p.refine_with_constraint(x <= max_value); } dest.upper_bound_assign(p); } @@ -135,17 +135,18 @@ wrap_assign(PSET& pointset, // Set `min_value' and `max_value' to the minimum and maximum values // a variable of width `w' and signedness `s' can take. - // NOTE: value is meant to range in [min_value, max_value). PPL_DIRTY_TEMP_COEFFICIENT(min_value); PPL_DIRTY_TEMP_COEFFICIENT(max_value); if (s == UNSIGNED) { min_value = 0; mul_2exp_assign(max_value, Coefficient_one(), w); + --max_value; } else { assert(s == SIGNED_2_COMPLEMENT); mul_2exp_assign(max_value, Coefficient_one(), w-1); neg_assign(min_value, max_value); + --max_value; } // If we are wrapping variables collectively, the ranges for the @@ -194,7 +195,7 @@ wrap_assign(PSET& pointset, set_full_range: pointset.unconstrain(x); full_range_bounds.insert(min_value <= x); - full_range_bounds.insert(x < max_value); + full_range_bounds.insert(x <= max_value); continue; } @@ -219,7 +220,7 @@ wrap_assign(PSET& pointset, if (first_quadrant < 0) full_range_bounds.insert(min_value <= x); if (last_quadrant > 0) - full_range_bounds.insert(x < max_value); + full_range_bounds.insert(x <= max_value); continue; } @@ -256,7 +257,7 @@ wrap_assign(PSET& pointset, const Variable& x = i->var; pointset.unconstrain(x); full_range_bounds.insert(min_value <= x); - full_range_bounds.insert(x < max_value); + full_range_bounds.insert(x <= max_value); } } } @@ -276,7 +277,7 @@ wrap_assign(PSET& pointset, if (pcs != 0) p.refine_with_constraints(*pcs); p.refine_with_constraint(min_value <= x); - p.refine_with_constraint(x < max_value); + p.refine_with_constraint(x <= max_value); hull.upper_bound_assign(p); } pointset.swap(hull);