blob: fbe35ac68e4a494c26b57b47e44485694c1fe8a4 [file] [log] [blame]
Stephen Hines176edba2014-12-01 14:53:08 -08001// RUN: %clang_cc1 -verify -fopenmp=libiomp5 %s
2
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}