Clang Project

clang_source_code/test/OpenMP/target_teams_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 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
41int 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