Clang Project

clang_source_code/test/OpenMP/teams_distribute_parallel_for_simd_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 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
49int 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