Update to isl-0.18-402-ga30c537

This is a regular maintenance update.

llvm-svn: 298595
This commit is contained in:
Tobias Grosser 2017-03-23 13:38:24 +00:00
parent 8a18299f20
commit 1f7e7d3d93
9 changed files with 41 additions and 17 deletions

View File

@ -1 +1 @@
isl-0.18-395-g77701b3
isl-0.18-402-ga30c537

View File

@ -7705,7 +7705,8 @@ the following.
int isl_vertices_get_n_vertices(
__isl_keep isl_vertices *vertices);
void isl_vertices_free(__isl_take isl_vertices *vertices);
__isl_null isl_vertices *isl_vertices_free(
__isl_take isl_vertices *vertices);
Vertices can be inspected and destroyed using the following functions.
@ -8725,9 +8726,12 @@ pairs of corresponding sink iterations and accessed data elements.
To compute standard flow dependences, the sink should be
a read, while the sources should be writes.
If any of the source accesses are marked as being I<may>
accesses, then there will be a dependence from the last
accesses, then there will be a (may) dependence from the last
I<must> access B<and> from any I<may> access that follows
this last I<must> access.
this last I<must> access, but still precedes the sink access.
Only dependences originating in a must access and without
any may accesses between the must access and the sink access
are considered to be must dependences.
In particular, if I<all> sources are I<may> accesses,
then memory based dependence analysis is performed.
If, on the other hand, all sources are I<must> accesses,

View File

@ -29,7 +29,7 @@ isl_ctx *isl_vertices_get_ctx(__isl_keep isl_vertices *vertices);
int isl_vertices_get_n_vertices(__isl_keep isl_vertices *vertices);
isl_stat isl_vertices_foreach_vertex(__isl_keep isl_vertices *vertices,
isl_stat (*fn)(__isl_take isl_vertex *vertex, void *user), void *user);
void isl_vertices_free(__isl_take isl_vertices *vertices);
__isl_null isl_vertices *isl_vertices_free(__isl_take isl_vertices *vertices);
isl_ctx *isl_cell_get_ctx(__isl_keep isl_cell *cell);
__isl_give isl_basic_set *isl_cell_get_domain(__isl_keep isl_cell *cell);

View File

@ -3938,6 +3938,8 @@ __isl_give isl_basic_map *isl_basic_map_project_out(
__isl_take isl_basic_map *bmap,
enum isl_dim_type type, unsigned first, unsigned n)
{
isl_bool empty;
if (n == 0)
return basic_map_space_reset(bmap, type);
if (type == isl_dim_div)
@ -3945,6 +3947,12 @@ __isl_give isl_basic_map *isl_basic_map_project_out(
"cannot project out existentially quantified variables",
return isl_basic_map_free(bmap));
empty = isl_basic_map_plain_is_empty(bmap);
if (empty < 0)
return isl_basic_map_free(bmap);
if (empty)
bmap = isl_basic_map_set_to_empty(bmap);
bmap = drop_irrelevant_constraints(bmap, type, first, n);
if (!bmap)
return NULL;

View File

@ -83,19 +83,21 @@ __isl_give isl_morph *isl_morph_cow(__isl_take isl_morph *morph)
return isl_morph_dup(morph);
}
void isl_morph_free(__isl_take isl_morph *morph)
__isl_null isl_morph *isl_morph_free(__isl_take isl_morph *morph)
{
if (!morph)
return;
return NULL;
if (--morph->ref > 0)
return;
return NULL;
isl_basic_set_free(morph->dom);
isl_basic_set_free(morph->ran);
isl_mat_free(morph->map);
isl_mat_free(morph->inv);
free(morph);
return NULL;
}
/* Is "morph" an identity on the parameters?

View File

@ -42,7 +42,7 @@ __isl_give isl_morph *isl_morph_alloc(
__isl_take isl_mat *map, __isl_take isl_mat *inv);
__isl_give isl_morph *isl_morph_copy(__isl_keep isl_morph *morph);
__isl_give isl_morph *isl_morph_identity(__isl_keep isl_basic_set *bset);
void isl_morph_free(__isl_take isl_morph *morph);
__isl_null isl_morph *isl_morph_free(__isl_take isl_morph *morph);
__isl_give isl_space *isl_morph_get_dom_space(__isl_keep isl_morph *morph);
__isl_give isl_space *isl_morph_get_ran_space(__isl_keep isl_morph *morph);

View File

@ -620,13 +620,13 @@ __isl_give struct isl_upoly *isl_upoly_cow(__isl_take struct isl_upoly *up)
return isl_upoly_dup(up);
}
void isl_upoly_free(__isl_take struct isl_upoly *up)
__isl_null struct isl_upoly *isl_upoly_free(__isl_take struct isl_upoly *up)
{
if (!up)
return;
return NULL;
if (--up->ref > 0)
return;
return NULL;
if (up->var < 0)
upoly_free_cst((struct isl_upoly_cst *)up);
@ -635,6 +635,7 @@ void isl_upoly_free(__isl_take struct isl_upoly *up)
isl_ctx_deref(up->ctx);
free(up);
return NULL;
}
static void isl_upoly_cst_reduce(__isl_keep struct isl_upoly_cst *cst)
@ -4566,6 +4567,9 @@ error:
* 0 if cst == 0
* 1 if cst == 1
* infinity if cst == -1
*
* If cst == -1, then explicitly check whether the domain is empty and,
* if so, return 0 instead.
*/
static __isl_give isl_pw_qpolynomial *constant_on_domain(
__isl_take isl_basic_set *bset, int cst)
@ -4573,6 +4577,8 @@ static __isl_give isl_pw_qpolynomial *constant_on_domain(
isl_space *dim;
isl_qpolynomial *qp;
if (cst < 0 && isl_basic_set_is_empty(bset) == isl_bool_true)
cst = 0;
if (!bset)
return NULL;

View File

@ -102,7 +102,7 @@ __isl_give struct isl_upoly *isl_upoly_zero(struct isl_ctx *ctx);
__isl_give struct isl_upoly *isl_upoly_copy(__isl_keep struct isl_upoly *up);
__isl_give struct isl_upoly *isl_upoly_cow(__isl_take struct isl_upoly *up);
__isl_give struct isl_upoly *isl_upoly_dup(__isl_keep struct isl_upoly *up);
void isl_upoly_free(__isl_take struct isl_upoly *up);
__isl_null struct isl_upoly *isl_upoly_free(__isl_take struct isl_upoly *up);
__isl_give struct isl_upoly *isl_upoly_mul(__isl_take struct isl_upoly *up1,
__isl_take struct isl_upoly *up2);

View File

@ -35,15 +35,15 @@ __isl_give isl_vertices *isl_vertices_copy(__isl_keep isl_vertices *vertices)
return vertices;
}
void isl_vertices_free(__isl_take isl_vertices *vertices)
__isl_null isl_vertices *isl_vertices_free(__isl_take isl_vertices *vertices)
{
int i;
if (!vertices)
return;
return NULL;
if (--vertices->ref > 0)
return;
return NULL;
for (i = 0; i < vertices->n_vertices; ++i) {
isl_basic_set_free(vertices->v[i].vertex);
@ -59,6 +59,8 @@ void isl_vertices_free(__isl_take isl_vertices *vertices)
isl_basic_set_free(vertices->bset);
free(vertices);
return NULL;
}
struct isl_vertex_list {
@ -66,7 +68,7 @@ struct isl_vertex_list {
struct isl_vertex_list *next;
};
static void free_vertex_list(struct isl_vertex_list *list)
static struct isl_vertex_list *free_vertex_list(struct isl_vertex_list *list)
{
struct isl_vertex_list *next;
@ -76,6 +78,8 @@ static void free_vertex_list(struct isl_vertex_list *list)
isl_basic_set_free(list->v.dom);
free(list);
}
return NULL;
}
static __isl_give isl_vertices *vertices_from_list(__isl_keep isl_basic_set *bset,