From: Sven Verdoolaege Date: Sat, 17 Jul 2010 08:45:51 +0000 (+0200) Subject: isl_map_read: extract out read_var_def X-Git-Tag: isl-0.04~80 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=3175a23b01fe25a568779d2d3098d395b41dcdee;p=platform%2Fupstream%2Fisl.git isl_map_read: extract out read_var_def Signed-off-by: Sven Verdoolaege --- diff --git a/isl_input.c b/isl_input.c index 493e7ac..e2e5bd2 100644 --- a/isl_input.c +++ b/isl_input.c @@ -319,6 +319,35 @@ error: return NULL; } +static __isl_give isl_basic_map *read_var_def(struct isl_stream *s, + __isl_take isl_basic_map *bmap, enum isl_dim_type type, struct vars *v) +{ + struct isl_vec *vec; + int k; + + vec = accept_affine(s, v); + if (!vec) + goto error; + v->v = variable_new(v, "", 0, v->n); + if (!v->v) + goto error; + v->n++; + bmap = isl_basic_map_extend_constraints(bmap, 1, 0); + k = isl_basic_map_alloc_equality(bmap); + if (k >= 0) { + isl_seq_cpy(bmap->eq[k], vec->el, vec->size); + isl_int_set_si(bmap->eq[k][vec->size], -1); + } + isl_vec_free(vec); + if (k < 0) + goto error; + + return bmap; +error: + isl_basic_map_free(bmap); + return NULL; +} + static __isl_give isl_basic_map *read_var_list(struct isl_stream *s, __isl_take isl_basic_map *bmap, enum isl_dim_type type, struct vars *v) { @@ -342,8 +371,6 @@ static __isl_give isl_basic_map *read_var_list(struct isl_stream *s, isl_token_free(tok); } else if (tok->type == ISL_TOKEN_IDENT || tok->type == ISL_TOKEN_VALUE) { - struct isl_vec *vec; - int k; if (type == isl_dim_param) { isl_stream_error(s, tok, "expecting unique identifier"); @@ -351,23 +378,8 @@ static __isl_give isl_basic_map *read_var_list(struct isl_stream *s, } isl_stream_push_token(s, tok); tok = NULL; - vec = accept_affine(s, v); - if (!vec) - goto error; - v->v = variable_new(v, "", 0, v->n); - if (!v->v) - goto error; - v->n++; bmap = isl_basic_map_add(bmap, type, 1); - bmap = isl_basic_map_extend_constraints(bmap, 1, 0); - k = isl_basic_map_alloc_equality(bmap); - if (k >= 0) { - isl_seq_cpy(bmap->eq[k], vec->el, vec->size); - isl_int_set_si(bmap->eq[k][vec->size], -1); - } - isl_vec_free(vec); - if (k < 0) - goto error; + bmap = read_var_def(s, bmap, type, v); } else break;