Clang Project

clang_source_code/test/OpenMP/barrier_messages.cpp
1// RUN: %clang_cc1 -verify -fopenmp -ferror-limit 100 %s
2
3// RUN: %clang_cc1 -verify -fopenmp-simd -ferror-limit 100 %s
4
5template <class T>
6T tmain(T argc) {
7#pragma omp barrier
8  ;
9#pragma omp barrier allocate(argc)  // expected-error {{unexpected OpenMP clause 'allocate' in directive '#pragma omp barrier'}}
10#pragma omp barrier untied  // expected-error {{unexpected OpenMP clause 'untied' in directive '#pragma omp barrier'}}
11#pragma omp barrier unknown // expected-warning {{extra tokens at the end of '#pragma omp barrier' are ignored}}
12  if (argc)
13#pragma omp barrier // expected-error {{'#pragma omp barrier' cannot be an immediate substatement}}
14    if (argc) {
15#pragma omp barrier
16    }
17  while (argc)
18#pragma omp barrier // expected-error {{'#pragma omp barrier' cannot be an immediate substatement}}
19    while (argc) {
20#pragma omp barrier
21    }
22  do
23#pragma omp barrier // expected-error {{'#pragma omp barrier' cannot be an immediate substatement}}
24    while (argc)
25      ;
26  do {
27#pragma omp barrier
28  } while (argc);
29  switch (argc)
30#pragma omp barrier // expected-error {{'#pragma omp barrier' cannot be an immediate substatement}}
31    switch (argc)
32    case 1:
33#pragma omp barrier // expected-error {{'#pragma omp barrier' cannot be an immediate substatement}}
34  switch (argc)
35  case 1: {
36#pragma omp barrier
37  }
38  switch (argc) {
39#pragma omp barrier
40  case 1:
41#pragma omp barrier
42    break;
43  default: {
44#pragma omp barrier
45  } break;
46  }
47  for (;;)
48#pragma omp barrier // expected-error {{'#pragma omp barrier' cannot be an immediate substatement}}
49    for (;;) {
50#pragma omp barrier
51    }
52label:
53#pragma omp barrier
54label1 : {
55#pragma omp barrier
56}
57
58  return T();
59}
60
61int main(int argc, char **argv) {
62#pragma omp barrier
63  ;
64#pragma omp barrier untied  // expected-error {{unexpected OpenMP clause 'untied' in directive '#pragma omp barrier'}}
65#pragma omp barrier unknown // expected-warning {{extra tokens at the end of '#pragma omp barrier' are ignored}}
66  if (argc)
67#pragma omp barrier // expected-error {{'#pragma omp barrier' cannot be an immediate substatement}}
68    if (argc) {
69#pragma omp barrier
70    }
71  while (argc)
72#pragma omp barrier // expected-error {{'#pragma omp barrier' cannot be an immediate substatement}}
73    while (argc) {
74#pragma omp barrier
75    }
76  do
77#pragma omp barrier // expected-error {{'#pragma omp barrier' cannot be an immediate substatement}}
78    while (argc)
79      ;
80  do {
81#pragma omp barrier
82  } while (argc);
83  switch (argc)
84#pragma omp barrier // expected-error {{'#pragma omp barrier' cannot be an immediate substatement}}
85    switch (argc)
86    case 1:
87#pragma omp barrier // expected-error {{'#pragma omp barrier' cannot be an immediate substatement}}
88  switch (argc)
89  case 1: {
90#pragma omp barrier
91  }
92  switch (argc) {
93#pragma omp barrier
94  case 1:
95#pragma omp barrier
96    break;
97  default: {
98#pragma omp barrier
99  } break;
100  }
101  for (;;)
102#pragma omp barrier // expected-error {{'#pragma omp barrier' cannot be an immediate substatement}}
103    for (;;) {
104#pragma omp barrier
105    }
106label:
107#pragma omp barrier
108label1 : {
109#pragma omp barrier
110}
111
112  return tmain(argc);
113}
114