/* { dg-require-effective-target size32plus } */ double u[1782225]; void foo(int N, int *res) { int i, j; double a, b; double sum = 0.0; for (j = 3; j < N; j = j * j) { sum += a + b; } /* Next two loops form first SCoP */ for (i = 0; i < N; i++) sum += u[i]; for (i = 0; i < N; i++) { a = u[i]; u[i] = i * i; b = u[i]; sum += a + b; } for (j = 3; j < N; j = j * j) { sum += a + b; } for (j = 3; j < N; j = j * j) { sum += a + b; } /* Next two loop-nests form second SCoP */ for (i = 0; i < N; i++) sum += u[i]; for (i = 0; i < N; i++) for (j = 0; j < N; j++) { a = u[i]; u[i] = i * i; b = u[j]; sum += a + b; } *res = sum + N; } /* { dg-final { scan-tree-dump-times "number of SCoPs: 2" 1 "graphite"} } */ /* { dg-final { scan-tree-dump-times "Loops in SCoP" 2 "graphite"} } */ /* { dg-final { scan-tree-dump "Loops in SCoP: 2, 3" "graphite"} } */ /* { dg-final { scan-tree-dump "Loops in SCoP: 6, 7, 8" "graphite"} } */