Clang Project

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