-#include "isl_ilp.h"
+/*
+ * Copyright 2008-2009 Katholieke Universiteit Leuven
+ *
+ * Use of this software is governed by the GNU LGPLv2.1 license
+ *
+ * Written by Sven Verdoolaege, K.U.Leuven, Departement
+ * Computerwetenschappen, Celestijnenlaan 200A, B-3001 Leuven, Belgium
+ */
+
+#include <isl/ilp.h>
#include "isl_map_private.h"
#include "isl_sample.h"
-#include "isl_seq.h"
+#include <isl/seq.h>
#include "isl_equalities.h"
/* Given a basic set "bset", construct a basic set U such that for
struct isl_mat *T = NULL;
struct isl_vec *v;
+ bset = isl_basic_set_copy(bset);
dim = isl_basic_set_total_dim(bset);
v = isl_vec_alloc(bset->ctx, 1 + dim);
if (!v)
goto error;
res = isl_basic_set_solve_ilp(bset, max, v->el, opt, sol_p);
isl_vec_free(v);
- if (res == isl_lp_ok && *sol_p) {
+ if (res == isl_lp_ok && sol_p) {
*sol_p = isl_mat_vec_product(T, *sol_p);
if (!*sol_p)
res = isl_lp_error;
} else
isl_mat_free(T);
+ isl_basic_set_free(bset);
return res;
error:
isl_mat_free(T);
isl_assert(bset->ctx, isl_basic_set_n_param(bset) == 0, goto error);
+ if (isl_basic_set_fast_is_empty(bset))
+ return isl_lp_empty;
+
if (bset->n_eq)
return solve_ilp_with_eq(bset, max, f, opt, sol_p);