1/* { dg-skip-if "not yet" { c++ } } */
2
3int i, j, k;
4extern int foo (void);
5
6void
7f1 (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
19void
20f2 (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
36void
37f3 (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
54void
55f4 (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
69void
70f5 (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
84void
85f6 (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