Clang Project

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