propagate updated lower bounds on strided loops to outer levels
When a loop has a non-trivial stride and stride detection is turned on,
the lower bound of the loop will get updated according to the stride.
This updated lower bound can sometimes be used to simplify bounds
or conditions in outer levels.
Without this patch, CLooG would generate the following code
for the new test case:
if (g4%4 == 0) {
if ((N >= g0+t1+1) && (t1 <= 7) && (16*floord(N+15*g1+15*t0+15,16) >= 16*g1+15*t0+16)) {
for (c0=t0;c0<=min(127,N-g1-1);c0+=16) {
S1(g0+t1,c0+g1);
}
}
}
while it now generates
if (g4%4 == 0) {
if ((N >= g0+t1+1) && (N >= g1+t0+1) && (t1 <= 7)) {
for (c0=t0;c0<=min(127,N-g1-1);c0+=16) {
S1(g0+t1,c0+g1);
}
}
}
Signed-off-by: Sven Verdoolaege <skimo@kotnet.org>