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