blob: 21b0e9c2fa2dbc9f0b353137ec53fdd9cb338287 [file] [log] [blame]
Alexey Bataev6d4ed052015-07-01 06:57:41 +00001// RUN: %clang_cc1 -verify -fopenmp -ferror-limit 100 %s
2
3int main(int argc, char **argv) {
4#pragma omp cancellation // expected-error {{expected an OpenMP directive}}
5#pragma omp cancellation point // expected-error {{one of 'for', 'parallel', 'sections' or 'taskgroup' is expected}}
6 ;
Jonas Hahnfeld64a9e3c2017-02-22 06:49:10 +00007#pragma omp parallel
8 {
9#pragma omp cancellation point // expected-error {{one of 'for', 'parallel', 'sections' or 'taskgroup' is expected}}
10 }
Alexey Bataev6d4ed052015-07-01 06:57:41 +000011#pragma omp cancellation point parallel untied // expected-error {{unexpected OpenMP clause 'untied' in directive '#pragma omp cancellation point'}}
12#pragma omp cancellation point unknown // expected-error {{one of 'for', 'parallel', 'sections' or 'taskgroup' is expected}}
Jonas Hahnfeld64a9e3c2017-02-22 06:49:10 +000013#pragma omp parallel
14 {
15#pragma omp cancellation point unknown // expected-error {{one of 'for', 'parallel', 'sections' or 'taskgroup' is expected}}
16 }
Alexey Bataev6d4ed052015-07-01 06:57:41 +000017#pragma omp cancellation point sections( // expected-warning {{extra tokens at the end of '#pragma omp cancellation point' are ignored}}
18#pragma omp cancellation point for, ) // expected-warning {{extra tokens at the end of '#pragma omp cancellation point' are ignored}}
19#pragma omp cancellation point taskgroup() // expected-warning {{extra tokens at the end of '#pragma omp cancellation point' are ignored}}
20#pragma omp cancellation point parallel, if // expected-warning {{extra tokens at the end of '#pragma omp cancellation point' are ignored}}
21 if (argc)
22#pragma omp cancellation point for // expected-error {{'#pragma omp cancellation point' cannot be an immediate substatement}}
23 if (argc) {
24#pragma omp taskgroup
25#pragma omp task
26#pragma omp parallel
27 {
28#pragma omp cancellation point taskgroup // expected-error {{region cannot be closely nested inside 'parallel' region}}
29 }
30 }
31#pragma omp parallel
32#pragma omp taskgroup
33 {
34#pragma omp cancellation point taskgroup // expected-error {{region cannot be closely nested inside 'taskgroup' region}}
35 }
36#pragma omp parallel
37 {
38#pragma omp cancellation point for // expected-error {{region cannot be closely nested inside 'parallel' region}}
39 }
40#pragma omp task
41 {
42#pragma omp cancellation point sections // expected-error {{region cannot be closely nested inside 'task' region}}
43 }
44#pragma omp sections
45 {
46#pragma omp cancellation point parallel // expected-error {{region cannot be closely nested inside 'sections' region}}
47 }
48 while (argc)
49#pragma omp cancellation point for // expected-error {{'#pragma omp cancellation point' cannot be an immediate substatement}}
50 while (argc) {
51#pragma omp cancellation point sections
52 }
53 do
54#pragma omp cancellation point parallel // expected-error {{'#pragma omp cancellation point' cannot be an immediate substatement}}
55 while (argc)
56 ;
57 do {
58#pragma omp cancellation point taskgroup
59 } while (argc);
60 switch (argc)
61#pragma omp cancellation point parallel // expected-error {{'#pragma omp cancellation point' cannot be an immediate substatement}}
62 switch (argc)
63 case 1:
Alexey Bataevc4fad652016-01-13 11:18:54 +000064#pragma omp cancellation point sections
Alexey Bataev6d4ed052015-07-01 06:57:41 +000065 switch (argc)
66 case 1: {
67#pragma omp cancellation point for
68 }
69 switch (argc) {
70#pragma omp cancellation point taskgroup
71 case 1:
Alexey Bataevc4fad652016-01-13 11:18:54 +000072#pragma omp cancellation point parallel
Alexey Bataev6d4ed052015-07-01 06:57:41 +000073 break;
74 default: {
75#pragma omp cancellation point sections
76 } break;
77 }
78 for (;;)
79#pragma omp cancellation point for // expected-error {{'#pragma omp cancellation point' cannot be an immediate substatement}}
80 for (;;) {
81#pragma omp cancellation point taskgroup
82 }
83label:
84#pragma omp cancellation point parallel // expected-error {{'#pragma omp cancellation point' cannot be an immediate substatement}}
85label1 : {
86#pragma omp cancellation point sections
87}
88
89 return 0;
90}
91