1 /* { dg-do compile } */
2 /* { dg-options "-fopenmp" } */
3 
4 int i, j, k;
5 extern int foo (void);
6 
7 void
f1(void)8 f1 (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 
19 void
f2(void)20 f2 (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 
35 void
f3(void)36 f3 (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 
52 void
f4(void)53 f4 (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 
66 void
f5(void)67 f5 (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 
80 void
f6(void)81 f6 (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