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>