blob: 397f1394a3e9106ad4c9cdf58e573c8568ec7b5f [file] [log] [blame]
Alexey Bataevdb390212015-05-20 04:24:19 +00001// RUN: %clang_cc1 -verify -fopenmp %s
Alexander Musman80c22892014-07-17 08:54:58 +00002
3int foo();
4
5int main() {
6 #pragma omp master
7 ;
8 #pragma omp master nowait // expected-error {{unexpected OpenMP clause 'nowait' in directive '#pragma omp master'}}
9 #pragma omp master unknown // expected-warning {{extra tokens at the end of '#pragma omp master' are ignored}}
10 foo();
11 {
12 #pragma omp master
13 } // expected-error {{expected statement}}
14 #pragma omp for
15 for (int i = 0; i < 10; ++i) {
16 foo();
17 #pragma omp master // expected-error {{region cannot be closely nested inside 'for' region}}
18 foo();
19 }
20 #pragma omp sections
21 {
22 foo();
23 #pragma omp master // expected-error {{region cannot be closely nested inside 'sections' region}}
24 foo();
25 }
26 #pragma omp single
27 for (int i = 0; i < 10; ++i) {
28 foo();
29 #pragma omp master // expected-error {{region cannot be closely nested inside 'single' region}}
30 foo();
31 }
32 #pragma omp master
33 for (int i = 0; i < 10; ++i) {
34 foo();
35 #pragma omp master
36 foo();
37 }
38 #pragma omp for ordered
39 for (int i = 0; i < 10; ++i)
40 #pragma omp master // expected-error {{region cannot be closely nested inside 'for' region}}
41 {
42 foo();
43 }
44
45 return 0;
46}
47
48int foo() {
49 L1:
50 foo();
51 #pragma omp master
52 {
53 foo();
54 goto L1; // expected-error {{use of undeclared label 'L1'}}
55 }
56 goto L2; // expected-error {{use of undeclared label 'L2'}}
57 #pragma omp master
58 {
59 L2:
60 foo();
61 }
62
63 return 0;
64}