allow multiple isl_pw_multi_aff objects with given domain space in union
commit4f9e65f032cf0dba06e5949c3ab7ae4995c6e840
authorSven Verdoolaege <skimo@kotnet.org>
Fri, 26 Jun 2015 20:21:59 +0000 (26 22:21 +0200)
committerSven Verdoolaege <skimo@kotnet.org>
Fri, 24 Jul 2015 06:15:56 +0000 (24 08:15 +0200)
tree0a7ccb82729fdc3e845569e0ec5ba0d4b3c85842
parent9ab90b021cdaa7aa1cb10a9eaec13f0c22796dfd
allow multiple isl_pw_multi_aff objects with given domain space in union

The ability for an isl_union_pw_multi_aff to contain multiple
isl_pw_multi_aff objects with the same domain space was removed
in 4d102a4 (only allow a single isl_pw_* object with given domain space
in isl_union_pw_*, Sat Jun 7 11:19:41 2014 +0200).
The reason was that there were no checks that these multiple
isl_pw_multi_aff objects have disjoint domains, resulting in
isl_union_pw_multi_aff objects that do not represent a function.

It can however, be very useful to have isl_union_pw_multi_aff objects
with multiple isl_pw_multi_aff objects defined over the same domain.
In particular, when combining instance set splitting with grouping
in a schedule tree, the corresponding contraction would map instances
from the same space to different groups, which then could not be
represented by an isl_union_pw_multi_aff.

Allow an isl_union_pw_multi_aff object to have multiple
isl_pw_multi_aff objects with the same domain space again
by implementing the checks for disjoint domains.
To facilitate such checks, the objects with the same domain space
are grouped together.

There is no point in doing the same for isl_union_pw_aff,
isl_union_pw_qpolynomial or isl_union_pw_qpolynomial_fold because
the base expressions have a fixed target space.
Moreover, an isl_pw_qpolynomial is assumed to be defined over
its entire domain space (with implicit value zero).

Signed-off-by: Sven Verdoolaege <skimo@kotnet.org>
Makefile.am
doc/user.pod
isl_aff.c
isl_test.c
isl_union_multi.c [new file with mode: 0644]