isl_pw_qpolynomial_gist: drop empty pieces in result
authorSven Verdoolaege <skimo@kotnet.org>
Mon, 25 Oct 2010 11:37:41 +0000 (13:37 +0200)
committerSven Verdoolaege <skimo@kotnet.org>
Tue, 26 Oct 2010 14:42:11 +0000 (16:42 +0200)
Signed-off-by: Sven Verdoolaege <skimo@kotnet.org>
isl_pw_templ.c

index a3cce71..8d15c1e 100644 (file)
@@ -408,11 +408,18 @@ __isl_give PW *FN(PW,gist)(__isl_take PW *pw, __isl_take isl_set *context)
        if (!pw)
                goto error;
 
-       for (i = 0; i < pw->n; ++i) {
+       for (i = pw->n - 1; i >= 0; --i) {
                pw->p[i].set = isl_set_gist_basic_set(pw->p[i].set,
                                                isl_basic_set_copy(hull));
                if (!pw->p[i].set)
                        goto error;
+               if (isl_set_fast_is_empty(pw->p[i].set)) {
+                       isl_set_free(pw->p[i].set);
+                       FN(EL,free)(pw->p[i].FIELD);
+                       if (i != pw->n - 1)
+                               pw->p[i] = pw->p[pw->n - 1];
+                       pw->n--;
+               }
        }
 
        isl_basic_set_free(hull);