1/* { dg-do compile } */
2/* { dg-options "-fopenmp" } */
3
4int i, j, k;
5extern int foo (void);
6
7void
8f1 (void)
9{
10  #pragma omp for collapse (2)
11  for (i = 0; i < 5; i++)
12    ;					/* { dg-error "not enough perfectly nested" } */
13  {
14    for (j = 0; j < 5; j++)
15      ;
16  }
17}
18
19void
20f2 (void)
21{
22  #pragma omp for collapse (2)
23  for (i = 0; i < 5; i++)
24    {
25      {
26	{
27	  for (j = 0; j < 5; j++)
28	    {
29	    }
30	}
31      }
32    }
33}
34
35void
36f3 (void)
37{
38  #pragma omp for collapse (2)
39  for (i = 0; i < 5; i++)
40    {
41      int k = foo ();			/* { dg-error "not enough perfectly nested" } */
42      {
43	{
44	  for (j = 0; j < 5; j++)
45	    {
46	    }
47	}
48      }
49    }
50}
51
52void
53f4 (void)
54{
55  #pragma omp for collapse (2)
56  for (i = 0; i < 5; i++)
57    {
58      {
59	for (j = 0; j < 5; j++)
60	  ;
61	foo ();				/* { dg-error "collapsed loops not perfectly nested before" } */
62      }
63    }
64}
65
66void
67f5 (void)
68{
69  #pragma omp for collapse (2)
70  for (i = 0; i < 5; i++)
71    {
72      {
73	for (j = 0; j < 5; j++)
74	  ;
75      }
76      foo ();				/* { dg-error "collapsed loops not perfectly nested before" } */
77    }
78}
79
80void
81f6 (void)
82{
83  #pragma omp for collapse (2)
84  for (i = 0; i < 5; i++)
85    {
86      {
87	for (j = 0; j < 5; j++)
88	  ;
89      }
90    }
91  foo ();
92}
93