Clang Project

clang_source_code/test/OpenMP/master_messages.cpp
1// RUN: %clang_cc1 -verify -fopenmp %s
2
3// RUN: %clang_cc1 -verify -fopenmp-simd %s
4
5int foo();
6
7int 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 allocate(i) // expected-error {{region cannot be closely nested inside 'single' region}} expected-error {{unexpected OpenMP clause 'allocate' in directive '#pragma omp master'}}
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
50int 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