isl_basic_map_lexopt: preinitialize domain
commita47882c4b55df049b413b352f19920714fb316bf
authorSven Verdoolaege <skimo@kotnet.org>
Tue, 12 Mar 2013 16:23:49 +0000 (12 17:23 +0100)
committerSven Verdoolaege <skimo@kotnet.org>
Tue, 19 Mar 2013 13:34:23 +0000 (19 14:34 +0100)
tree8ace4af5dac8e3b515668dcb06194392cff857af
parent8fc1f4d9257fa41ce788afbec0124d399d7c3196
isl_basic_map_lexopt: preinitialize domain

The original code would pass a universe domain to isl_basic_map_partial_lexopt,
but this means that the parametric integer programming engine will consider
all inequalities as splitting (with respect to the universe context),
resulting in a fair amount of wasted effort.
More importantly, the border constraints may be transferred to the
context in the middle of constraints that actually split the context
into parts with possibly different solutions.  The current heuristic
for merging solutions that turn out to be identical will not be able
to transfer solution across the border constraints since they only
allow for a solution on one side of the constraint.

By prepopulating the domain with some of the constraints from the input map,
we can avoid some redundant computations and we improve the opportunities
for merging identical partial solutions.

Signed-off-by: Sven Verdoolaege <skimo@kotnet.org>
isl_map.c
test_inputs/codegen/hoist2.c