1 /* { dg-do compile { target size32plus } } */
2 /* { dg-options "-O2 -ftree-loop-distribution -ftree-loop-distribute-patterns -fdump-tree-ldist-details" } */
3 
4 #define M (256)
5 #define N (512)
6 
7 struct st
8 {
9   int a[M][N];
10   int c[M];
11   int b[M][N];
12 };
13 
14 void
foo(struct st * p)15 foo (struct st *p)
16 {
17   for (unsigned i = 0; i < M; ++i)
18     {
19       p->c[i] = 0;
20       for (unsigned j = N; j > 0; --j)
21 	{
22 	  p->a[i][j - 1] = 0;
23 	  p->b[i][j - 1] = 0;
24 	}
25     }
26 }
27 
28 /* { dg-final { scan-tree-dump-times "Loop nest . distributed: split to 0 loops and 1 library" 1 "ldist" } } */
29 /* { dg-final { scan-tree-dump-times "__builtin_memset \\(.*, 0, 1049600\\);" 1 "ldist" } } */
30