1 // RUN: %clang_cc1 -verify=expected,omp51 -fopenmp -ferror-limit 100 -o - %s -Wuninitialized
2
3 // RUN: %clang_cc1 -verify=expected,omp51 -fopenmp-simd -ferror-limit 100 -o - %s -Wuninitialized
4
5 // RUN: %clang_cc1 -verify=expected,omp50 -fopenmp -fopenmp-version=50 -ferror-limit 100 -o - %s -Wuninitialized
6
7 // RUN: %clang_cc1 -verify=expected,omp50 -fopenmp-simd -fopenmp-version=50 -ferror-limit 100 -o - %s -Wuninitialized
8
9 void foo();
10
11 template <class T, typename S, int N>
tmain(T argc,S ** argv)12 T tmain(T argc, S **argv) {
13 T i;
14 #pragma omp target teams distribute parallel for proc_bind // expected-error {{expected '(' after 'proc_bind'}}
15 for (i = 0; i < argc; ++i)
16 foo();
17 #pragma omp target teams distribute parallel for proc_bind( // omp50-error {{expected 'master', 'close' or 'spread' in OpenMP clause 'proc_bind'}} omp51-error {{expected 'master', 'close', 'spread' or 'primary' in OpenMP clause 'proc_bind'}} expected-error {{expected ')'}} expected-note {{to match this '('}}
18 for (i = 0; i < argc; ++i)
19 foo();
20 #pragma omp target teams distribute parallel for proc_bind() // omp50-error {{expected 'master', 'close' or 'spread' in OpenMP clause 'proc_bind'}} omp51-error {{expected 'master', 'close', 'spread' or 'primary' in OpenMP clause 'proc_bind'}}
21 for (i = 0; i < argc; ++i)
22 foo();
23 #pragma omp target teams distribute parallel for proc_bind(master // expected-error {{expected ')'}} expected-note {{to match this '('}}
24 for (i = 0; i < argc; ++i)
25 foo();
26 #pragma omp target teams distribute parallel for proc_bind(close), proc_bind(spread) // expected-error {{directive '#pragma omp target teams distribute parallel for' cannot contain more than one 'proc_bind' clause}}
27 for (i = 0; i < argc; ++i)
28 foo();
29 #pragma omp target teams distribute parallel for proc_bind(x) // omp50-error {{expected 'master', 'close' or 'spread' in OpenMP clause 'proc_bind'}} omp51-error {{expected 'master', 'close', 'spread' or 'primary' in OpenMP clause 'proc_bind'}}
30 for (i = 0; i < argc; ++i)
31 foo();
32
33 #pragma omp target teams distribute parallel for proc_bind(master)
34 for (i = 0; i < argc; ++i)
35 foo();
36
37 #pragma omp parallel proc_bind(close)
38 #pragma omp target teams distribute parallel for proc_bind(spread)
39 for (i = 0; i < argc; ++i)
40 foo();
41
42 return T();
43 }
44
main(int argc,char ** argv)45 int main(int argc, char **argv) {
46 int i;
47 #pragma omp target teams distribute parallel for proc_bind // expected-error {{expected '(' after 'proc_bind'}}
48 for (i = 0; i < argc; ++i)
49 foo();
50 #pragma omp target teams distribute parallel for proc_bind( // omp50-error {{expected 'master', 'close' or 'spread' in OpenMP clause 'proc_bind'}} omp51-error {{expected 'master', 'close', 'spread' or 'primary' in OpenMP clause 'proc_bind'}} expected-error {{expected ')'}} expected-note {{to match this '('}}
51 for (i = 0; i < argc; ++i)
52 foo();
53 #pragma omp target teams distribute parallel for proc_bind() // omp50-error {{expected 'master', 'close' or 'spread' in OpenMP clause 'proc_bind'}} omp51-error {{expected 'master', 'close', 'spread' or 'primary' in OpenMP clause 'proc_bind'}}
54 for (i = 0; i < argc; ++i)
55 foo();
56 #pragma omp target teams distribute parallel for proc_bind(master // expected-error {{expected ')'}} expected-note {{to match this '('}}
57 for (i = 0; i < argc; ++i)
58 foo();
59 #pragma omp target teams distribute parallel for proc_bind(close), proc_bind(spread) // expected-error {{directive '#pragma omp target teams distribute parallel for' cannot contain more than one 'proc_bind' clause}}
60 for (i = 0; i < argc; ++i)
61 foo();
62 #pragma omp target teams distribute parallel for proc_bind(x) // omp50-error {{expected 'master', 'close' or 'spread' in OpenMP clause 'proc_bind'}} omp51-error {{expected 'master', 'close', 'spread' or 'primary' in OpenMP clause 'proc_bind'}}
63 for (i = 0; i < argc; ++i)
64 foo();
65
66 #pragma omp target teams distribute parallel for proc_bind(master)
67 for (i = 0; i < argc; ++i)
68 foo();
69
70 #pragma omp parallel proc_bind(close)
71 #pragma omp target teams distribute parallel for proc_bind(spread)
72 for (i = 0; i < argc; ++i)
73 foo();
74 return tmain<int, char, 3>(argc, argv);
75 }
76