xref: /aosp_15_r20/external/clang/test/OpenMP/taskgroup_messages.cpp (revision 67e74705e28f6214e480b399dd47ea732279e315)
1*67e74705SXin Li // RUN: %clang_cc1 -verify -fopenmp %s
2*67e74705SXin Li 
3*67e74705SXin Li int foo();
4*67e74705SXin Li 
main()5*67e74705SXin Li int main() {
6*67e74705SXin Li   #pragma omp taskgroup
7*67e74705SXin Li   ;
8*67e74705SXin Li   #pragma omp taskgroup unknown // expected-warning {{extra tokens at the end of '#pragma omp taskgroup' are ignored}}
9*67e74705SXin Li   foo();
10*67e74705SXin Li   {
11*67e74705SXin Li     #pragma omp taskgroup
12*67e74705SXin Li   } // expected-error {{expected statement}}
13*67e74705SXin Li   #pragma omp taskgroup
14*67e74705SXin Li   #pragma omp taskgroup
15*67e74705SXin Li   for (int i = 0; i < 10; ++i) {
16*67e74705SXin Li     foo();
17*67e74705SXin Li     #pragma omp parallel
18*67e74705SXin Li     #pragma omp for
19*67e74705SXin Li     for (int j = 0; j < 10; j++) {
20*67e74705SXin Li       foo();
21*67e74705SXin Li       #pragma omp taskgroup
22*67e74705SXin Li       foo();
23*67e74705SXin Li     }
24*67e74705SXin Li   }
25*67e74705SXin Li   #pragma omp taskgroup
26*67e74705SXin Li   #pragma omp taskgroup
27*67e74705SXin Li   for (int i = 0; i < 10; ++i) {
28*67e74705SXin Li     foo();
29*67e74705SXin Li     #pragma omp parallel
30*67e74705SXin Li     #pragma omp for
31*67e74705SXin Li     for (int j = 0; j < 10; j++) {
32*67e74705SXin Li       #pragma omp taskgroup
33*67e74705SXin Li       foo();
34*67e74705SXin Li     }
35*67e74705SXin Li   }
36*67e74705SXin Li   #pragma omp taskgroup
37*67e74705SXin Li   #pragma omp taskgroup
38*67e74705SXin Li   for (int i = 0; i < 10; ++i) {
39*67e74705SXin Li     foo();
40*67e74705SXin Li     #pragma omp parallel
41*67e74705SXin Li     #pragma omp for
42*67e74705SXin Li     for (int j = 0; j < 10; j++) {
43*67e74705SXin Li       #pragma omp taskgroup
44*67e74705SXin Li       foo();
45*67e74705SXin Li     }
46*67e74705SXin Li   }
47*67e74705SXin Li 
48*67e74705SXin Li   return 0;
49*67e74705SXin Li }
50*67e74705SXin Li 
foo()51*67e74705SXin Li int foo() {
52*67e74705SXin Li   L1:
53*67e74705SXin Li     foo();
54*67e74705SXin Li   #pragma omp taskgroup
55*67e74705SXin Li   {
56*67e74705SXin Li     foo();
57*67e74705SXin Li     goto L1; // expected-error {{use of undeclared label 'L1'}}
58*67e74705SXin Li   }
59*67e74705SXin Li   goto L2; // expected-error {{use of undeclared label 'L2'}}
60*67e74705SXin Li   #pragma omp taskgroup
61*67e74705SXin Li   {
62*67e74705SXin Li     L2:
63*67e74705SXin Li     foo();
64*67e74705SXin Li   }
65*67e74705SXin Li 
66*67e74705SXin Li   return 0;
67*67e74705SXin Li }
68