isl_basic_map_drop_redundant_divs: set div expression if obvious from constraints
authorSven Verdoolaege <skimo@kotnet.org>
Fri, 22 May 2009 10:17:00 +0000 (12:17 +0200)
committerSven Verdoolaege <skimo@kotnet.org>
Thu, 11 Jun 2009 15:40:27 +0000 (17:40 +0200)
isl_map_simplify.c

index 3376500..7d7eaf4 100644 (file)
@@ -2090,9 +2090,15 @@ struct isl_basic_map *isl_basic_map_drop_redundant_divs(
                isl_int_sub(bmap->ineq[last_pos][0],
                            bmap->ineq[last_pos][0], bmap->ineq[last_neg][0]);
                if (!redundant) {
-                       pairs[i] = 0;
-                       --n;
-                       continue;
+                       if (!ok_to_set_div_from_bound(bmap, i, last_pos)) {
+                               pairs[i] = 0;
+                               --n;
+                               continue;
+                       }
+                       bmap = set_div_from_lower_bound(bmap, i, last_pos);
+                       bmap = isl_basic_map_simplify(bmap);
+                       free(pairs);
+                       return isl_basic_map_drop_redundant_divs(bmap);
                }
                if (last_pos > last_neg) {
                        isl_basic_map_drop_inequality(bmap, last_pos);