isl_vertices_foreach_disjoint_cell: handle saturation of interior point
commit95ad777bcb91f2e5eaf5e89d61106901234dc7d5
authorSven Verdoolaege <skimo@kotnet.org>
Tue, 15 Nov 2016 09:31:50 +0000 (15 10:31 +0100)
committerSven Verdoolaege <skimo@kotnet.org>
Tue, 15 Nov 2016 11:41:58 +0000 (15 12:41 +0100)
tree5d59bfba6cb7d17086ef1ae8f2880c0b25c36d01
parent6919c867600fbb509ef566fc0729a96961ed7e82
isl_vertices_foreach_disjoint_cell: handle saturation of interior point

In order to compute disjoint cells, exactly one of each pair of
internal constraints that separate two cells is tightened.
An interior point of one of the cells is used to select which
of the two constraints in each pair should be tightened.
In particular, the constraint that contains the interior point
is left unmodified.  This ensures that the constraints that only
appear once, i.e., those that lie on the border of the union of cells,
are not modified.
In rare cases, a pair of internal constraints separating two
other cells may also go through the interior point selected from one cell.
In this case, both sides would be kept, resulting in cells that are
not disjoint.
Use the sign of the coefficients of the constraints to determine
which of these internal constraints should be kept.  Note that
the border constraints are always handled by the interior point,
so there is no risk that one of these would get tightened.

Signed-off-by: Sven Verdoolaege <skimo@kotnet.org>
isl_map.c
isl_test.c
isl_vertices.c