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 |
11 | #pragma omp teams distribute parallel for simd proc_bind // expected-error {{expected '(' after 'proc_bind'}} |
12 | for (i = 0; i < argc; ++i) |
13 | foo(); |
14 | #pragma omp target |
15 | #pragma omp teams distribute parallel for simd proc_bind( // expected-error {{expected 'master', 'close' or 'spread' in OpenMP clause 'proc_bind'}} expected-error {{expected ')'}} expected-note {{to match this '('}} |
16 | for (i = 0; i < argc; ++i) |
17 | foo(); |
18 | #pragma omp target |
19 | #pragma omp teams distribute parallel for simd proc_bind() // expected-error {{expected 'master', 'close' or 'spread' in OpenMP clause 'proc_bind'}} |
20 | for (i = 0; i < argc; ++i) |
21 | foo(); |
22 | #pragma omp target |
23 | #pragma omp teams distribute parallel for simd proc_bind(master // expected-error {{expected ')'}} expected-note {{to match this '('}} |
24 | for (i = 0; i < argc; ++i) |
25 | foo(); |
26 | #pragma omp target |
27 | #pragma omp teams distribute parallel for simd proc_bind(close), proc_bind(spread) // expected-error {{directive '#pragma omp teams distribute parallel for simd' cannot contain more than one 'proc_bind' clause}} |
28 | for (i = 0; i < argc; ++i) |
29 | foo(); |
30 | #pragma omp target |
31 | #pragma omp teams distribute parallel for simd proc_bind(x) // expected-error {{expected 'master', 'close' or 'spread' in OpenMP clause 'proc_bind'}} |
32 | for (i = 0; i < argc; ++i) |
33 | foo(); |
34 | |
35 | #pragma omp target |
36 | #pragma omp teams distribute parallel for simd proc_bind(master) |
37 | for (i = 0; i < argc; ++i) |
38 | foo(); |
39 | |
40 | #pragma omp parallel proc_bind(close) |
41 | #pragma omp target |
42 | #pragma omp teams distribute parallel for simd proc_bind(spread) |
43 | for (i = 0; i < argc; ++i) |
44 | foo(); |
45 | |
46 | return T(); |
47 | } |
48 | |
49 | int main(int argc, char **argv) { |
50 | int i; |
51 | #pragma omp target |
52 | #pragma omp teams distribute parallel for simd proc_bind // expected-error {{expected '(' after 'proc_bind'}} |
53 | for (i = 0; i < argc; ++i) |
54 | foo(); |
55 | #pragma omp target |
56 | #pragma omp teams distribute parallel for simd proc_bind( // expected-error {{expected 'master', 'close' or 'spread' in OpenMP clause 'proc_bind'}} expected-error {{expected ')'}} expected-note {{to match this '('}} |
57 | for (i = 0; i < argc; ++i) |
58 | foo(); |
59 | #pragma omp target |
60 | #pragma omp teams distribute parallel for simd proc_bind() // expected-error {{expected 'master', 'close' or 'spread' in OpenMP clause 'proc_bind'}} |
61 | for (i = 0; i < argc; ++i) |
62 | foo(); |
63 | #pragma omp target |
64 | #pragma omp teams distribute parallel for simd proc_bind(master // expected-error {{expected ')'}} expected-note {{to match this '('}} |
65 | for (i = 0; i < argc; ++i) |
66 | foo(); |
67 | #pragma omp target |
68 | #pragma omp teams distribute parallel for simd proc_bind(close), proc_bind(spread) // expected-error {{directive '#pragma omp teams distribute parallel for simd' cannot contain more than one 'proc_bind' clause}} |
69 | for (i = 0; i < argc; ++i) |
70 | foo(); |
71 | #pragma omp target |
72 | #pragma omp teams distribute parallel for simd proc_bind(x) // expected-error {{expected 'master', 'close' or 'spread' in OpenMP clause 'proc_bind'}} |
73 | for (i = 0; i < argc; ++i) |
74 | foo(); |
75 | |
76 | #pragma omp target |
77 | #pragma omp teams distribute parallel for simd proc_bind(master) |
78 | for (i = 0; i < argc; ++i) |
79 | foo(); |
80 | |
81 | #pragma omp parallel proc_bind(close) |
82 | #pragma omp target |
83 | #pragma omp teams distribute parallel for simd proc_bind(spread) |
84 | for (i = 0; i < argc; ++i) |
85 | foo(); |
86 | return tmain<int, char, 3>(argc, argv); |
87 | } |
88 | |