1 /* { dg-additional-options "-fno-thread-jumps --param max-stores-to-sink=0" } */
2
3 #define N 1500
4
5 int x[N][N], y[N];
6
7 void abort (void);
8
9 int foo(void)
10 {
11 int i, j;
12
13 for (i = 0; i < N; i++)
14 y[i] = i;
15
16 for (i = 0; i < N; i++)
17 for (j = 0; j < N; j++)
18 x[i][j] = i + j;
19
20 for (i = 0; i < N; i++)
21 {
22 y[i] = i;
23
24 for (j = 0; j < N; j++)
25 {
26 if (j > 500)
27 {
28 x[i][j] = i + j + 3;
29 y[j] = i*j + 10;
30 }
31 else
32 x[i][j] = x[i][j]*3;
33 }
34 }
35
36 return x[2][5]*y[8];
37 }
38
39 int main(void)
40 {
41 if (168 != foo())
42 abort ();
43
44 return 0;
45 }
46
47 /* Check that parallel code generation part make the right answer. */
48 /* { dg-final { scan-tree-dump-times "5 loops carried no dependency" 1 "graphite" } } */
49 /* { dg-final { scan-tree-dump-times "loopfn.0" 4 "optimized" } } */
50 /* { dg-final { scan-tree-dump-times "loopfn.1" 4 "optimized" } } */