AST generator: take into account some parameter constraints early on
In particular, intersect the executed relation with some
of the parameter constraints. We want to avoid breaking
up the executed relation into several pieces, so we only
intersect with a single disjunct parameter domain.
Taking into account these parameter constraints from the
start allows us to avoid investigating some cases that
will turn out to be impossible.
For example, for the omega/ts1d-mp-i_ts-m_b-0.a test case,
isl used to generate a loop
for (int c1 = -1; c1 < (T >= 1 ? T : 0); c1 += 1)
because it needs to combine a disjunct where the bound is T
and a disjunct where the bound is 0 (and T is unconstrained).
By including the constraint T >= 0 from the context, this bound
can be directly constructed as in
for (int c1 = -1; c1 < T; c1 += 1)
Signed-off-by: Sven Verdoolaege <skimo@kotnet.org>