isl_ast_build_node_from_schedule: improve component detection
In particular, when checking whether instances of a statement
may be executed after instances of another statement, check
for values of the loop iterator that actually correspond
to statement instances.
The original test would solve an LP problem and could
therefore pick up a solution that does not correspond
to integer values.
Consider an ILP problem instead to avoid these spurious solutions.
In fact, perform (at most) two ILP feasibility tests
instead of one LP optimization, the assumption being that
in most cases the second ILP problem is trivially empty
or has a solution that was already found when solving
the first ILP problem.
Signed-off-by: Sven Verdoolaege <sven.verdoolaege@gmail.com>