/* { dg-require-effective-target size32plus } */ /* Formerly known as ltrans-1.c */ #define DEBUG 0 #if DEBUG #include #endif double u[1782225]; static int __attribute__((noinline)) foo (int N) { int i, j; double sum = 0.0; /* These two loops should be interchanged. */ for (i = 0; i < N; i++) { for (j = 0; j < N; j++) sum = sum + u[i + 1335 * j]; u[1336 * i] *= 2; } return sum + N + u[1336 * 2] + u[1336]; } extern void abort (); int main (void) { int i, j, res; for (i = 0; i < 1782225; i++) u[i] = 2; res = foo (1335); #if DEBUG fprintf (stderr, "res = %d \n", res); #endif if (res != 3565793) abort (); return 0; } /*FIXME: Between isl 0.12 and isl 0.15 the schedule optimizer needs to print something canonical so that it can be checked in the test. The final code generated by both are same in this case but the messaged printed are not consistent. */ /* { dg-final { scan-tree-dump "tiled" "graphite" } } */