isl_tab.c: mark_redundant: only mark variable nonneg if they weren't already
authorSven Verdoolaege <skimo@kotnet.org>
Thu, 23 Jul 2009 16:51:26 +0000 (18:51 +0200)
committerSven Verdoolaege <skimo@kotnet.org>
Tue, 4 Aug 2009 17:29:01 +0000 (19:29 +0200)
More imporantly, don't undo such a mark during rollback.

isl_tab.c

index 3f6d5d1..cdc173a 100644 (file)
--- a/isl_tab.c
+++ b/isl_tab.c
@@ -354,7 +354,7 @@ static int mark_redundant(struct isl_tab *tab, int row)
        var->is_redundant = 1;
        isl_assert(tab->mat->ctx, row >= tab->n_redundant, return);
        if (tab->need_undo || tab->row_var[row] >= 0) {
-               if (tab->row_var[row] >= 0) {
+               if (tab->row_var[row] >= 0 && !var->is_nonneg) {
                        var->is_nonneg = 1;
                        push(tab, isl_tab_undo_nonneg, var);
                }