return NULL;
while (progress) {
progress = 0;
+ if (!bmap)
+ break;
+ if (isl_basic_map_plain_is_empty(bmap))
+ break;
bmap = isl_basic_map_normalize_constraints(bmap);
bmap = normalize_div_expressions(bmap);
bmap = remove_duplicate_divs(bmap, &progress);
return 0;
}
- for (i = 0; i < bmap->n_div; ++i)
+ for (i = 0; i < bmap->n_div; ++i) {
+ if (isl_int_is_zero(bmap->div[i][0]))
+ continue;
if (!isl_int_is_zero(bmap->div[i][1+pos]))
return 0;
+ }
return 1;
}
for (i = 0; i < context->n_eq; ++i) {
int k;
k = isl_basic_map_alloc_equality(bmap);
+ if (k < 0)
+ return isl_basic_map_free(bmap);
isl_seq_cpy(bmap->eq[k], context->eq[i], 1 + total_context);
isl_seq_clr(bmap->eq[k] + 1 + total_context,
isl_basic_map_total_dim(bmap) - total_context);