This clarifies what the possible return values are.
Signed-off-by: Sven Verdoolaege <sven.verdoolaege@gmail.com>
@@ -2776,7 +2776,7 @@ these functions
enum isl_dim_type type);
__isl_give isl_val *isl_term_get_coefficient_val(
__isl_keep isl_term *term);
- int isl_term_get_exp(__isl_keep isl_term *term,
+ isl_size isl_term_get_exp(__isl_keep isl_term *term,
enum isl_dim_type type, unsigned pos);
__isl_give isl_aff *isl_term_get_div(
__isl_keep isl_term *term, unsigned pos);
@@ -111,7 +111,7 @@ __isl_null isl_term *isl_term_free(__isl_take isl_term *term);
isl_size isl_term_dim(__isl_keep isl_term *term, enum isl_dim_type type);
__isl_give isl_val *isl_term_get_coefficient_val(__isl_keep isl_term *term);
-int isl_term_get_exp(__isl_keep isl_term *term,
+isl_size isl_term_get_exp(__isl_keep isl_term *term,
enum isl_dim_type type, unsigned pos);
__isl_give isl_aff *isl_term_get_div(__isl_keep isl_term *term, unsigned pos);
@@ -4046,16 +4046,16 @@ __isl_give isl_val *isl_term_get_coefficient_val(__isl_keep isl_term *term)
static
#include "check_type_range_templ.c"
-int isl_term_get_exp(__isl_keep isl_term *term,
+isl_size isl_term_get_exp(__isl_keep isl_term *term,
enum isl_dim_type type, unsigned pos)
{
int offset;
if (isl_term_check_range(term, type, pos, 1) < 0)
- return -1;
+ return isl_size_error;
offset = isl_term_offset(term, type);
if (offset < 0)
- return -1;
+ return isl_size_error;
return term->pow[offset + pos];
}
@@ -199,6 +199,7 @@ static isl_stat collect_fixed_sign_terms(__isl_take isl_term *term, void *user)
int sign;
isl_size nparam;
isl_size nvar;
+ isl_size exp;
nparam = isl_term_dim(term, isl_dim_param);
nvar = isl_term_dim(term, isl_dim_set);
@@ -213,13 +214,19 @@ static isl_stat collect_fixed_sign_terms(__isl_take isl_term *term, void *user)
for (i = 0; i < nparam; ++i) {
if (data->signs[i] > 0)
continue;
- if (isl_term_get_exp(term, isl_dim_param, i) % 2)
+ exp = isl_term_get_exp(term, isl_dim_param, i);
+ if (exp < 0)
+ return isl_stat_error;
+ if (exp % 2)
sign = -sign;
}
for (i = 0; i < nvar; ++i) {
if (data->signs[nparam + i] > 0)
continue;
- if (isl_term_get_exp(term, isl_dim_set, i) % 2)
+ exp = isl_term_get_exp(term, isl_dim_set, i);
+ if (exp < 0)
+ return isl_stat_error;
+ if (exp % 2)
sign = -sign;
}