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