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