P(void)1 void P(void)
2 {
3   int i, j;
4 
5 #pragma acc parallel
6   {
7 #pragma acc loop auto
8     for (i = 0; i < 10; i++)
9       { }
10 #pragma acc loop gang
11     for (i = 0; i < 10; i++)
12       { }
13 #pragma acc loop gang(static:5)
14     for (i = 0; i < 10; i++)
15       { }
16 #pragma acc loop gang(static:*)
17     for (i = 0; i < 10; i++)
18       { }
19 #pragma acc loop gang // { dg-message "containing loop" }
20     for (i = 0; i < 10; i++)
21       {
22 #pragma acc loop vector
23 	for (j = 1; j < 10; j++)
24 	  { }
25 #pragma acc loop worker
26 	for (j = 1; j < 10; j++)
27 	  { }
28 #pragma acc loop gang // { dg-error "inner loop uses same" }
29 	for (j = 1; j < 10; j++)
30 	  { }
31       }
32 #pragma acc loop seq gang // { dg-error "'seq' overrides" }
33     for (i = 0; i < 10; i++)
34       { }
35 
36 #pragma acc loop worker
37     for (i = 0; i < 10; i++)
38       { }
39 #pragma acc loop worker // { dg-message "containing loop" 2 }
40     for (i = 0; i < 10; i++)
41       {
42 #pragma acc loop vector
43 	for (j = 1; j < 10; j++)
44 	  { }
45 #pragma acc loop worker // { dg-error "inner loop uses same" }
46 	for (j = 1; j < 10; j++)
47 	  { }
48 #pragma acc loop gang // { dg-error "incorrectly nested" }
49 	for (j = 1; j < 10; j++)
50 	  { }
51       }
52 #pragma acc loop seq worker // { dg-error "'seq' overrides" }
53     for (i = 0; i < 10; i++)
54       { }
55 #pragma acc loop gang worker
56     for (i = 0; i < 10; i++)
57       { }
58 
59 #pragma acc loop vector
60     for (i = 0; i < 10; i++)
61       { }
62     for (i = 0; i < 10; i++)
63       { }
64 #pragma acc loop vector // { dg-message "containing loop" 3 }
65     for (i = 0; i < 10; i++)
66       {
67 #pragma acc loop vector // { dg-error "inner loop uses same" }
68 	for (j = 1; j < 10; j++)
69 	  { }
70 #pragma acc loop worker // { dg-error "incorrectly nested" }
71 	for (j = 1; j < 10; j++)
72 	  { }
73 #pragma acc loop gang // { dg-error "incorrectly nested" }
74 	for (j = 1; j < 10; j++)
75 	  { }
76       }
77 #pragma acc loop seq vector // { dg-error "'seq' overrides" }
78     for (i = 0; i < 10; i++)
79       { }
80 #pragma acc loop gang vector
81     for (i = 0; i < 10; i++)
82       { }
83 #pragma acc loop worker vector
84     for (i = 0; i < 10; i++)
85       { }
86 
87 #pragma acc loop auto
88     for (i = 0; i < 10; i++)
89       { }
90 #pragma acc loop seq auto // { dg-error "'seq' overrides" }
91     for (i = 0; i < 10; i++)
92       { }
93 #pragma acc loop gang auto // { dg-error "'auto' conflicts" }
94     for (i = 0; i < 10; i++)
95       { }
96 #pragma acc loop worker auto // { dg-error "'auto' conflicts" }
97     for (i = 0; i < 10; i++)
98       { }
99 #pragma acc loop vector auto // { dg-error "'auto' conflicts" }
100     for (i = 0; i < 10; i++)
101       { }
102 
103   }
104 
105 #pragma acc parallel loop auto
106   for (i = 0; i < 10; i++)
107     { }
108 #pragma acc parallel loop gang
109   for (i = 0; i < 10; i++)
110     { }
111 #pragma acc parallel loop gang(static:5)
112   for (i = 0; i < 10; i++)
113     { }
114 #pragma acc parallel loop gang(static:*)
115   for (i = 0; i < 10; i++)
116     { }
117 
118 #pragma acc parallel loop seq gang // { dg-error "'seq' overrides" "" { target c } }
119   for (i = 0; i < 10; i++) // { dg-error "'seq' overrides" "" { target c++ } }
120     { }
121 
122 #pragma acc parallel loop worker
123   for (i = 0; i < 10; i++)
124     { }
125 
126 #pragma acc parallel loop seq worker // { dg-error "'seq' overrides" "" { target c } }
127   for (i = 0; i < 10; i++) // { dg-error "'seq' overrides" "" { target c++ } }
128     { }
129 #pragma acc parallel loop gang worker
130   for (i = 0; i < 10; i++)
131     { }
132 
133 #pragma acc parallel loop vector
134   for (i = 0; i < 10; i++)
135     { }
136 
137 #pragma acc parallel loop seq vector // { dg-error "'seq' overrides" "" { target c } }
138   for (i = 0; i < 10; i++) // { dg-error "'seq' overrides" "" { target c++ } }
139     { }
140 #pragma acc parallel loop gang vector
141   for (i = 0; i < 10; i++)
142     { }
143 #pragma acc parallel loop worker vector
144   for (i = 0; i < 10; i++)
145     { }
146 
147 #pragma acc parallel loop auto
148   for (i = 0; i < 10; i++)
149     { }
150 #pragma acc parallel loop seq auto // { dg-error "'seq' overrides" "" { target c } }
151   for (i = 0; i < 10; i++) // { dg-error "'seq' overrides" "" { target c++ } }
152     { }
153 #pragma acc parallel loop gang auto // { dg-error "'auto' conflicts" "" { target c } }
154   for (i = 0; i < 10; i++) // { dg-error "'auto' conflicts" "" { target c++ } }
155     { }
156 #pragma acc parallel loop worker auto // { dg-error "'auto' conflicts" "" { target c } }
157   for (i = 0; i < 10; i++) // { dg-error "'auto' conflicts" "" { target c++ } }
158     { }
159 #pragma acc parallel loop vector auto // { dg-error "'auto' conflicts" "" { target c } }
160   for (i = 0; i < 10; i++) // { dg-error "'auto' conflicts" "" { target c++ } }
161     { }
162 }
163