1 /* { dg-do run { target size32plus } } */
2 /* { dg-options "-O3 -ftree-loop-distribute-patterns -fdump-tree-ldist-details" } */
3 /* { dg-skip-if "too big data segment" { visium-*-* } } */
4 
5 #define M (300)
6 #define N (200)
7 
8 struct st
9 {
10   double a[M];
11   double b[M];
12   double c[M][N];
13 };
14 
15 int __attribute__ ((noinline))
foo(struct st * s)16 foo (struct st *s)
17 {
18   int i, j;
19   for (i = 0; i != M;)
20     {
21       s->a[i] = 0.0;
22       s->b[i] = 1.0;
23       for (j = 0; 1; ++j)
24 	{
25 	  if (j == N) goto L2;
26 	  s->c[i][j] = 0.0;
27 	}
28 L2:
29       ++i;
30     }
31   return 0;
32 }
33 
34 struct st s;
35 
36 int
main(void)37 main (void)
38 {
39   return foo (&s);
40 }
41 
42 /* { dg-final { scan-tree-dump "distributed: split to " "ldist" } } */
43