blob: f8bbe2c36bea378020a2d9188d536c2d9e8434dd [file] [log] [blame]
Alexey Bataev80909872015-07-02 11:25:17 +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 cancel // 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 cancel // expected-error {{one of 'for', 'parallel', 'sections' or 'taskgroup' is expected}}
10 }
Alexey Bataev80909872015-07-02 11:25:17 +000011#pragma omp cancel parallel untied // expected-error {{unexpected OpenMP clause 'untied' in directive '#pragma omp cancel'}}
12#pragma omp cancel 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 cancel unknown // expected-error {{one of 'for', 'parallel', 'sections' or 'taskgroup' is expected}}
16 }
Alexey Bataev80909872015-07-02 11:25:17 +000017#pragma omp cancel sections( // expected-warning {{extra tokens at the end of '#pragma omp cancel' are ignored}}
18#pragma omp cancel for, ) // expected-warning {{extra tokens at the end of '#pragma omp cancel' are ignored}}
19#pragma omp cancel taskgroup() // expected-warning {{extra tokens at the end of '#pragma omp cancel' are ignored}}
20#pragma omp cancel parallel, if // expected-warning {{extra tokens at the end of '#pragma omp cancel' are ignored}}
21 if (argc)
22#pragma omp cancel for // expected-error {{'#pragma omp cancel' cannot be an immediate substatement}}
23 if (argc) {
24#pragma omp taskgroup
25#pragma omp task
26#pragma omp parallel
27 {
28#pragma omp cancel 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 cancel taskgroup // expected-error {{region cannot be closely nested inside 'taskgroup' region}}
35 }
36#pragma omp parallel
37 {
38#pragma omp cancel for // expected-error {{region cannot be closely nested inside 'parallel' region}}
39 }
40#pragma omp task
41 {
42#pragma omp cancel sections // expected-error {{region cannot be closely nested inside 'task' region}}
43 }
44#pragma omp sections
45 {
46#pragma omp cancel parallel // expected-error {{region cannot be closely nested inside 'sections' region}}
47 }
48 while (argc)
49#pragma omp cancel for // expected-error {{'#pragma omp cancel' cannot be an immediate substatement}}
50 while (argc) {
51#pragma omp cancel sections
52 }
53 do
54#pragma omp cancel parallel // expected-error {{'#pragma omp cancel' cannot be an immediate substatement}}
55 while (argc)
56 ;
57 do {
58#pragma omp cancel taskgroup
59 } while (argc);
60 switch (argc)
61#pragma omp cancel parallel // expected-error {{'#pragma omp cancel' cannot be an immediate substatement}}
62 switch (argc)
63 case 1:
Alexey Bataevc4fad652016-01-13 11:18:54 +000064#pragma omp cancel sections
Alexey Bataev80909872015-07-02 11:25:17 +000065 switch (argc)
66 case 1: {
67#pragma omp cancel for
68 }
69 switch (argc) {
70#pragma omp cancel taskgroup
71 case 1:
Alexey Bataevc4fad652016-01-13 11:18:54 +000072#pragma omp cancel parallel
Alexey Bataev80909872015-07-02 11:25:17 +000073 break;
74 default: {
75#pragma omp cancel sections
76 } break;
77 }
78 for (;;)
79#pragma omp cancel for // expected-error {{'#pragma omp cancel' cannot be an immediate substatement}}
80 for (;;) {
81#pragma omp cancel taskgroup
82 }
83label:
84#pragma omp cancel parallel // expected-error {{'#pragma omp cancel' cannot be an immediate substatement}}
85label1 : {
86#pragma omp cancel sections
87}
88
89 return 0;
90}
91