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