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