1/* { dg-do compile } */
2/* { dg-options "-O2 -ftree-loop-distribution -ftree-loop-distribute-patterns -fdump-tree-ldist-details -fdisable-tree-cunroll -fdisable-tree-cunrolli" } */
3
4typedef int mad_fixed_t;
5struct mad_pcm
6{
7  unsigned int samplerate;
8  unsigned short channels;
9  unsigned short length;
10  mad_fixed_t samples[2][1152];
11};
12struct mad_synth
13{
14  mad_fixed_t filter[2][2][2][16][8];
15  unsigned int phase;
16  struct mad_pcm pcm;
17};
18void mad_synth_mute (struct mad_synth *synth);
19void
20mad_synth_mute (struct mad_synth *synth)
21{
22  unsigned int ch;
23  unsigned int s;
24  unsigned int v;
25
26  ch = 0U;
27  while (ch < 2U)
28    {
29      s = 0U;
30      while (s < 16U)
31	{
32	  v = 0U;
33	  while (v < 8U)
34	    {
35	      synth->filter[ch][1][1][s][v] = 0;
36	      synth->filter[ch][1][0][s][v] = 0;
37	      synth->filter[ch][0][1][s][v] = 0;
38	      synth->filter[ch][0][0][s][v] = 0;
39	      v++;
40	    }
41	  s++;
42	}
43      ch++;
44    }
45  return;
46}
47
48/* { dg-final { scan-tree-dump "distributed: split to 0 loops and 4 library calls" "ldist" } } */
49/* { dg-final { scan-tree-dump-times "generated memset zero" 4 "ldist" } } */
50/* { dg-final { cleanup-tree-dump "ldist" } } */
51