145
|
1 void foo (void);
|
|
2 int v;
|
|
3 #ifdef __cplusplus
|
|
4 extern "C" {
|
|
5 #endif
|
|
6 int omp_get_thread_num (void);
|
|
7 int omp_get_num_threads (void);
|
|
8 int omp_target_is_present (const void *, int);
|
|
9 int omp_get_cancellation (void);
|
|
10 #ifdef __cplusplus
|
|
11 }
|
|
12 #endif
|
|
13
|
|
14 void
|
|
15 f1 (int *a)
|
|
16 {
|
|
17 int i;
|
|
18 #pragma omp simd order(concurrent)
|
|
19 for (i = 0; i < 64; i++)
|
|
20 {
|
|
21 #pragma omp parallel /* { dg-error "OpenMP constructs other than 'ordered simd', 'simd', 'loop' or 'atomic' may not be nested inside 'simd' region" } */
|
|
22 foo ();
|
|
23 }
|
|
24 #pragma omp simd order(concurrent)
|
|
25 for (i = 0; i < 64; i++)
|
|
26 {
|
|
27 int j;
|
|
28 #pragma omp simd
|
|
29 for (j = 0; j < 64; j++)
|
|
30 a[64 * i + j] = i + j;
|
|
31 }
|
|
32 #pragma omp simd order(concurrent)
|
|
33 for (i = 0; i < 64; i++)
|
|
34 {
|
|
35 #pragma omp critical /* { dg-error "OpenMP constructs other than 'ordered simd', 'simd', 'loop' or 'atomic' may not be nested inside 'simd' region" } */
|
|
36 foo ();
|
|
37 }
|
|
38 #pragma omp simd order(concurrent)
|
|
39 for (i = 0; i < 64; i++)
|
|
40 {
|
|
41 #pragma omp ordered simd /* { dg-error "OpenMP constructs other than 'parallel', 'loop' or 'simd' may not be nested inside a region with the 'order\\(concurrent\\)' clause" } */
|
|
42 foo ();
|
|
43 }
|
|
44 #pragma omp simd order(concurrent)
|
|
45 for (i = 0; i < 64; i++)
|
|
46 {
|
|
47 #pragma omp atomic /* { dg-error "OpenMP constructs other than 'parallel', 'loop' or 'simd' may not be nested inside a region with the 'order\\(concurrent\\)' clause" } */
|
|
48 v++;
|
|
49 }
|
|
50 #pragma omp simd order(concurrent)
|
|
51 for (i = 0; i < 64; i++)
|
|
52 {
|
|
53 #pragma omp atomic read /* { dg-error "OpenMP constructs other than 'parallel', 'loop' or 'simd' may not be nested inside a region with the 'order\\(concurrent\\)' clause" "" { target c++ } } */
|
|
54 a[i] = v; /* { dg-error "OpenMP constructs other than 'parallel', 'loop' or 'simd' may not be nested inside a region with the 'order\\(concurrent\\)' clause" "" { target c } } */
|
|
55 }
|
|
56 #pragma omp simd order(concurrent)
|
|
57 for (i = 0; i < 64; i++)
|
|
58 {
|
|
59 #pragma omp atomic write /* { dg-error "OpenMP constructs other than 'parallel', 'loop' or 'simd' may not be nested inside a region with the 'order\\(concurrent\\)' clause" "" { target c++ } } */
|
|
60 v = a[i]; /* { dg-error "OpenMP constructs other than 'parallel', 'loop' or 'simd' may not be nested inside a region with the 'order\\(concurrent\\)' clause" "" { target c } } */
|
|
61 }
|
|
62 #pragma omp simd order(concurrent)
|
|
63 for (i = 0; i < 64; i++)
|
|
64 a[i] += omp_get_thread_num (); /* { dg-error "OpenMP runtime API call '\[^\n\r]*omp_get_thread_num\[^\n\r]*' in a region with 'order\\(concurrent\\)' clause" } */
|
|
65 #pragma omp simd order(concurrent)
|
|
66 for (i = 0; i < 64; i++)
|
|
67 a[i] += omp_get_num_threads (); /* { dg-error "OpenMP runtime API call '\[^\n\r]*omp_get_num_threads\[^\n\r]*' in a region with 'order\\(concurrent\\)' clause" } */
|
|
68 #pragma omp simd order(concurrent)
|
|
69 for (i = 0; i < 64; i++)
|
|
70 a[i] += omp_target_is_present (a + i, 0); /* { dg-error "OpenMP runtime API call '\[^\n\r]*omp_target_is_present\[^\n\r]*' in a region with 'order\\(concurrent\\)' clause" } */
|
|
71 #pragma omp simd order(concurrent)
|
|
72 for (i = 0; i < 64; i++)
|
|
73 a[i] += omp_get_cancellation (); /* { dg-error "OpenMP runtime API call '\[^\n\r]*omp_get_cancellation\[^\n\r]*' in a region with 'order\\(concurrent\\)' clause" } */
|
|
74 }
|
|
75
|
|
76 void
|
|
77 f2 (int *a)
|
|
78 {
|
|
79 int i;
|
|
80 #pragma omp for simd order(concurrent)
|
|
81 for (i = 0; i < 64; i++)
|
|
82 {
|
|
83 #pragma omp parallel /* { dg-error "OpenMP constructs other than 'ordered simd', 'simd', 'loop' or 'atomic' may not be nested inside 'simd' region" } */
|
|
84 foo ();
|
|
85 }
|
|
86 #pragma omp for simd order(concurrent)
|
|
87 for (i = 0; i < 64; i++)
|
|
88 {
|
|
89 int j;
|
|
90 #pragma omp simd
|
|
91 for (j = 0; j < 64; j++)
|
|
92 a[64 * i + j] = i + j;
|
|
93 }
|
|
94 #pragma omp for simd order(concurrent)
|
|
95 for (i = 0; i < 64; i++)
|
|
96 {
|
|
97 #pragma omp critical /* { dg-error "OpenMP constructs other than 'ordered simd', 'simd', 'loop' or 'atomic' may not be nested inside 'simd' region" } */
|
|
98 foo ();
|
|
99 }
|
|
100 #pragma omp for simd order(concurrent)
|
|
101 for (i = 0; i < 64; i++)
|
|
102 {
|
|
103 #pragma omp ordered simd /* { dg-error "OpenMP constructs other than 'parallel', 'loop' or 'simd' may not be nested inside a region with the 'order\\(concurrent\\)' clause" } */
|
|
104 foo ();
|
|
105 }
|
|
106 #pragma omp for simd order(concurrent)
|
|
107 for (i = 0; i < 64; i++)
|
|
108 {
|
|
109 #pragma omp atomic /* { dg-error "OpenMP constructs other than 'parallel', 'loop' or 'simd' may not be nested inside a region with the 'order\\(concurrent\\)' clause" } */
|
|
110 v++;
|
|
111 }
|
|
112 #pragma omp for simd order(concurrent)
|
|
113 for (i = 0; i < 64; i++)
|
|
114 {
|
|
115 #pragma omp atomic read /* { dg-error "OpenMP constructs other than 'parallel', 'loop' or 'simd' may not be nested inside a region with the 'order\\(concurrent\\)' clause" "" { target c++ } } */
|
|
116 a[i] = v; /* { dg-error "OpenMP constructs other than 'parallel', 'loop' or 'simd' may not be nested inside a region with the 'order\\(concurrent\\)' clause" "" { target c } } */
|
|
117 }
|
|
118 #pragma omp for simd order(concurrent)
|
|
119 for (i = 0; i < 64; i++)
|
|
120 {
|
|
121 #pragma omp atomic write /* { dg-error "OpenMP constructs other than 'parallel', 'loop' or 'simd' may not be nested inside a region with the 'order\\(concurrent\\)' clause" "" { target c++ } } */
|
|
122 v = a[i]; /* { dg-error "OpenMP constructs other than 'parallel', 'loop' or 'simd' may not be nested inside a region with the 'order\\(concurrent\\)' clause" "" { target c } } */
|
|
123 }
|
|
124 #pragma omp for simd order(concurrent)
|
|
125 for (i = 0; i < 64; i++)
|
|
126 a[i] += omp_get_thread_num (); /* { dg-error "OpenMP runtime API call '\[^\n\r]*omp_get_thread_num\[^\n\r]*' in a region with 'order\\(concurrent\\)' clause" } */
|
|
127 #pragma omp for simd order(concurrent)
|
|
128 for (i = 0; i < 64; i++)
|
|
129 a[i] += omp_get_num_threads (); /* { dg-error "OpenMP runtime API call '\[^\n\r]*omp_get_num_threads\[^\n\r]*' in a region with 'order\\(concurrent\\)' clause" } */
|
|
130 #pragma omp for simd order(concurrent)
|
|
131 for (i = 0; i < 64; i++)
|
|
132 a[i] += omp_target_is_present (a + i, 0); /* { dg-error "OpenMP runtime API call '\[^\n\r]*omp_target_is_present\[^\n\r]*' in a region with 'order\\(concurrent\\)' clause" } */
|
|
133 #pragma omp for simd order(concurrent)
|
|
134 for (i = 0; i < 64; i++)
|
|
135 a[i] += omp_get_cancellation (); /* { dg-error "OpenMP runtime API call '\[^\n\r]*omp_get_cancellation\[^\n\r]*' in a region with 'order\\(concurrent\\)' clause" } */
|
|
136 }
|
|
137
|
|
138 void
|
|
139 f3 (int *a)
|
|
140 {
|
|
141 int i;
|
|
142 #pragma omp for order(concurrent)
|
|
143 for (i = 0; i < 64; i++)
|
|
144 {
|
|
145 #pragma omp parallel
|
|
146 foo ();
|
|
147 }
|
|
148 #pragma omp for order(concurrent)
|
|
149 for (i = 0; i < 64; i++)
|
|
150 {
|
|
151 int j;
|
|
152 #pragma omp simd
|
|
153 for (j = 0; j < 64; j++)
|
|
154 a[64 * i + j] = i + j;
|
|
155 }
|
|
156 #pragma omp for order(concurrent)
|
|
157 for (i = 0; i < 64; i++)
|
|
158 {
|
|
159 #pragma omp critical /* { dg-error "OpenMP constructs other than 'parallel', 'loop' or 'simd' may not be nested inside a region with the 'order\\(concurrent\\)' clause" } */
|
|
160 foo ();
|
|
161 }
|
|
162 #pragma omp for order(concurrent)
|
|
163 for (i = 0; i < 64; i++)
|
|
164 {
|
|
165 #pragma omp ordered simd /* { dg-error "OpenMP constructs other than 'parallel', 'loop' or 'simd' may not be nested inside a region with the 'order\\(concurrent\\)' clause" } */
|
|
166 foo ();
|
|
167 }
|
|
168 #pragma omp for order(concurrent)
|
|
169 for (i = 0; i < 64; i++)
|
|
170 {
|
|
171 #pragma omp atomic /* { dg-error "OpenMP constructs other than 'parallel', 'loop' or 'simd' may not be nested inside a region with the 'order\\(concurrent\\)' clause" } */
|
|
172 v++;
|
|
173 }
|
|
174 #pragma omp for order(concurrent)
|
|
175 for (i = 0; i < 64; i++)
|
|
176 {
|
|
177 #pragma omp atomic read /* { dg-error "OpenMP constructs other than 'parallel', 'loop' or 'simd' may not be nested inside a region with the 'order\\(concurrent\\)' clause" "" { target c++ } } */
|
|
178 a[i] = v; /* { dg-error "OpenMP constructs other than 'parallel', 'loop' or 'simd' may not be nested inside a region with the 'order\\(concurrent\\)' clause" "" { target c } } */
|
|
179 }
|
|
180 #pragma omp for order(concurrent)
|
|
181 for (i = 0; i < 64; i++)
|
|
182 {
|
|
183 #pragma omp atomic write /* { dg-error "OpenMP constructs other than 'parallel', 'loop' or 'simd' may not be nested inside a region with the 'order\\(concurrent\\)' clause" "" { target c++ } } */
|
|
184 v = a[i]; /* { dg-error "OpenMP constructs other than 'parallel', 'loop' or 'simd' may not be nested inside a region with the 'order\\(concurrent\\)' clause" "" { target c } } */
|
|
185 }
|
|
186 #pragma omp for order(concurrent)
|
|
187 for (i = 0; i < 64; i++)
|
|
188 {
|
|
189 #pragma omp task /* { dg-error "OpenMP constructs other than 'parallel', 'loop' or 'simd' may not be nested inside a region with the 'order\\(concurrent\\)' clause" } */
|
|
190 a[i]++;
|
|
191 }
|
|
192 #pragma omp for order(concurrent)
|
|
193 for (i = 0; i < 64; i++)
|
|
194 {
|
|
195 int j;
|
|
196 #pragma omp taskloop /* { dg-error "OpenMP constructs other than 'parallel', 'loop' or 'simd' may not be nested inside a region with the 'order\\(concurrent\\)' clause" } */
|
|
197 for (j = 0; j < 64; j++)
|
|
198 a[64 * i + j] = i + j;
|
|
199 }
|
|
200 #pragma omp for order(concurrent)
|
|
201 for (i = 0; i < 64; i++)
|
|
202 a[i] += omp_get_thread_num (); /* { dg-error "OpenMP runtime API call '\[^\n\r]*omp_get_thread_num\[^\n\r]*' in a region with 'order\\(concurrent\\)' clause" } */
|
|
203 #pragma omp for order(concurrent)
|
|
204 for (i = 0; i < 64; i++)
|
|
205 a[i] += omp_get_num_threads (); /* { dg-error "OpenMP runtime API call '\[^\n\r]*omp_get_num_threads\[^\n\r]*' in a region with 'order\\(concurrent\\)' clause" } */
|
|
206 #pragma omp for order(concurrent)
|
|
207 for (i = 0; i < 64; i++)
|
|
208 a[i] += omp_target_is_present (a + i, 0); /* { dg-error "OpenMP runtime API call '\[^\n\r]*omp_target_is_present\[^\n\r]*' in a region with 'order\\(concurrent\\)' clause" } */
|
|
209 #pragma omp for order(concurrent)
|
|
210 for (i = 0; i < 64; i++)
|
|
211 a[i] += omp_get_cancellation (); /* { dg-error "OpenMP runtime API call '\[^\n\r]*omp_get_cancellation\[^\n\r]*' in a region with 'order\\(concurrent\\)' clause" } */
|
|
212 }
|