summaryrefslogtreecommitdiff
path: root/isl_tab_pip.c
diff options
context:
space:
mode:
authorSven Verdoolaege <skimo@kotnet.org>2009-09-25 19:17:20 +0200
committerSven Verdoolaege <skimo@kotnet.org>2009-10-09 19:56:02 +0200
commit79d277b08490900bd698114586a63160a3da5d01 (patch)
tree8faf81cfb0d1f9e70f8fabb02e6897675e14574a /isl_tab_pip.c
parentd13fd7f0fc432a2175eee6d5c8e35e43661e6a36 (diff)
downloadisl-79d277b08490900bd698114586a63160a3da5d01.tar.gz
isl-79d277b08490900bd698114586a63160a3da5d01.tar.bz2
isl-79d277b08490900bd698114586a63160a3da5d01.zip
isl_tab_basic_map_partial_lexopt: remove samples that are no longer useful
When we test an inequality in row_sign, it is useful to store any samples found, so we can use them to speed up the computation of future row signs. However, when we return from a branch, then all the samples found since we entered the branch all satisfy the constraints on that branch and so they will not satisfy the constraints on any other branch. We therefore save the current number of samples when we enter a branch and then discard all subsequently added samples when we return from the branch.
Diffstat (limited to 'isl_tab_pip.c')
-rw-r--r--isl_tab_pip.c2
1 files changed, 2 insertions, 0 deletions
diff --git a/isl_tab_pip.c b/isl_tab_pip.c
index e88985d0..5886fd7e 100644
--- a/isl_tab_pip.c
+++ b/isl_tab_pip.c
@@ -1973,6 +1973,7 @@ static struct isl_sol *find_in_pos(struct isl_sol *sol,
snap = isl_tab_snap(sol->context_tab);
isl_tab_push_basis(sol->context_tab);
+ isl_tab_save_samples(sol->context_tab);
if (isl_tab_extend_cons(sol->context_tab, 1) < 0)
goto error;
@@ -2004,6 +2005,7 @@ static struct isl_sol *no_sol_in_strict(struct isl_sol *sol,
struct isl_tab_undo *snap;
snap = isl_tab_snap(sol->context_tab);
isl_tab_push_basis(sol->context_tab);
+ isl_tab_save_samples(sol->context_tab);
if (isl_tab_extend_cons(sol->context_tab, 1) < 0)
goto error;