xref: /llvm-project/clang/test/OpenMP/parallel_master_default_messages.cpp (revision 0c6f2f629cc0017361310fa4c132090413a874db)
1 // RUN: %clang_cc1 -verify -fopenmp -fopenmp-version=50 -ferror-limit 100 -o - %s -Wuninitialized
2 
3 // RUN: %clang_cc1 -verify -fopenmp-simd -fopenmp-version=50 -ferror-limit 100 -o - %s -Wuninitialized
4 
5 // RUN: %clang_cc1 -verify -DOMP51 -fopenmp -ferror-limit 100 -o - %s -Wuninitialized
6 
7 // RUN: %clang_cc1 -verify -DOMP51 -fopenmp-simd -ferror-limit 100 -o - %s -Wuninitialized
8 
9 void foo();
10 
11 namespace {
12 static int y = 0;
13 }
14 static int x = 0;
15 
main(int argc,char ** argv)16 int main(int argc, char **argv) {
17 #pragma omp parallel master default // expected-error {{expected '(' after 'default'}}
18   {
19 #pragma omp parallel master default( // expected-error {{expected 'none', 'shared', 'private' or 'firstprivate' in OpenMP clause 'default'}} expected-error {{expected ')'}} expected-note {{to match this '('}}
20       {
21 #pragma omp parallel master default() // expected-error {{expected 'none', 'shared', 'private' or 'firstprivate' in OpenMP clause 'default'}}
22           {
23 #pragma omp parallel master default(none // expected-error {{expected ')'}} expected-note {{to match this '('}}
24               {
25 #pragma omp parallel master default(shared), default(shared) // expected-error {{directive '#pragma omp parallel master' cannot contain more than one 'default' clause}}
26                   {
27 #pragma omp parallel master default(x) // expected-error {{expected 'none', 'shared', 'private' or 'firstprivate' in OpenMP clause 'default'}}
28                       {foo();
29             }
30           }
31         }
32       }
33     }
34   }
35 
36 #pragma omp parallel master default(none) // expected-note {{explicit data sharing attribute requested here}}
37   {
38     ++argc; // expected-error {{variable 'argc' must have explicitly specified data sharing attributes}}
39   }
40 
41 #pragma omp parallel master default(none) // expected-note {{explicit data sharing attribute requested here}}
42   {
43 #pragma omp parallel master default(shared)
44     {
45       ++argc;  // expected-error {{variable 'argc' must have explicitly specified data sharing attributes}}
46     }
47   }
48 
49 #ifdef OMP51
50 #pragma omp parallel master default(firstprivate) // expected-note 2 {{explicit data sharing attribute requested here}}
51   {
52     ++x; // expected-error {{variable 'x' must have explicitly specified data sharing attributes}}
53     ++y; // expected-error {{variable 'y' must have explicitly specified data sharing attributes}}
54   }
55 #pragma omp parallel master default(private) // expected-note 2 {{explicit data sharing attribute requested here}}
56   {
57     ++x; // expected-error {{variable 'x' must have explicitly specified data sharing attributes}}
58     ++y; // expected-error {{variable 'y' must have explicitly specified data sharing attributes}}
59   }
60 #endif
61 
62   return 0;
63 }
64