split ISL_BASIC_MAP_NORMALIZED into *_NO_REDUNDANT and *_SORTED
commit951c6fc32a51b285b8962bf1ae2a484789992288
authorSven Verdoolaege <skimo@kotnet.org>
Wed, 10 Aug 2016 09:23:14 +0000 (10 11:23 +0200)
committerSven Verdoolaege <sven.verdoolaege@gmail.com>
Thu, 16 Aug 2018 19:42:51 +0000 (16 21:42 +0200)
tree5d52e310420df93c549e3189e566b83641b91c84
parent53206f67671b2228286799f7d94c54814d1f14e2
split ISL_BASIC_MAP_NORMALIZED into *_NO_REDUNDANT and *_SORTED

The ISL_BASIC_MAP_NORMALIZED flags indicates that an isl_basic_map_normalize
operation has been performed.  This function removes redundant constraints
and then sorts the remaining (inequality) constraints.
The removal of redundant constraints already has its own flag.
Replace the flag for normalization by a flag for sorting such
that the state of having sorted constraints can also be kept
on its own.
This is mainly a clean-up, but the decoupling of the two flags
allows one of the flags to be preserved in some cases,
potentially preventing duplicate computations.

Adding an equality constraint can make some constraints redundant,
but on its own does not affect the sorting of the inequality constraints.
Note that using this equality constraint to eliminate variables
from inequality constraints may affect the sorting,
but eliminate_var_using_equality already clears this flag.

Other removals of the normalized flag are replaced by the removal
of both flags.  Note that in some cases, the removal of redundant
constraints flag already gets removed and then it does not need
to be removed twice.

The functions isl_basic_map_drop_inequality, isl_basic_map_swap_vars,
isl_basic_map_swap_div, isl_basic_map_move_dims, isl_basic_map_realign
and isl_basic_map_transform_dims cannot introduce
any redundant inequality constraints and therefore do not need to clear
this flag.

The function create_todo calls isl_basic_set_sort_constraints
so it does not need to set the sorted flag.

Signed-off-by: Sven Verdoolaege <sven.verdoolaege@gmail.com>
isl_map.c
isl_map_private.h
isl_map_simplify.c
isl_mat.c
isl_vertices.c