1 /* { dg-skip-if "not yet" { c++ } } */
2 
3 int i, j, k;
4 extern int foo (void);
5 
6 void
f1(void)7 f1 (void)
8 {
9   #pragma acc parallel
10   #pragma acc loop 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 acc parallel
23   #pragma acc loop collapse (2)
24   for (i = 0; i < 5; i++)
25     {
26       {
27 	{
28 	  for (j = 0; j < 5; j++)
29 	    {
30 	    }
31 	}
32       }
33     }
34 }
35 
36 void
f3(void)37 f3 (void)
38 {
39   #pragma acc parallel
40   #pragma acc loop collapse (2)
41   for (i = 0; i < 5; i++)
42     {
43       int k = foo ();			/* { dg-error "not enough perfectly nested" } */
44       {
45 	{
46 	  for (j = 0; j < 5; j++)
47 	    {
48 	    }
49 	}
50       }
51     }
52 }
53 
54 void
f4(void)55 f4 (void)
56 {
57   #pragma acc parallel
58   #pragma acc loop collapse (2)
59   for (i = 0; i < 5; i++)
60     {
61       {
62 	for (j = 0; j < 5; j++)
63 	  ;
64 	foo ();				/* { dg-error "collapsed loops not perfectly nested before" } */
65       }
66     }
67 }
68 
69 void
f5(void)70 f5 (void)
71 {
72   #pragma acc parallel
73   #pragma acc loop collapse (2)
74   for (i = 0; i < 5; i++)
75     {
76       {
77 	for (j = 0; j < 5; j++)
78 	  ;
79       }
80       foo ();				/* { dg-error "collapsed loops not perfectly nested before" } */
81     }
82 }
83 
84 void
f6(void)85 f6 (void)
86 {
87   #pragma acc parallel
88   #pragma acc loop collapse (2)
89   for (i = 0; i < 5; i++)
90     {
91       {
92 	for (j = 0; j < 5; j++)
93 	  ;
94       }
95     }
96   foo ();
97 }
98