1 // RUN: %clang_cc1 -verify -fopenmp -ferror-limit 100 %s 2 3 int 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 ; 7 #pragma omp parallel 8 { 9 #pragma omp cancellation point // expected-error {{one of 'for', 'parallel', 'sections' or 'taskgroup' is expected}} 10 } 11 #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}} 13 #pragma omp parallel 14 { 15 #pragma omp cancellation point unknown // expected-error {{one of 'for', 'parallel', 'sections' or 'taskgroup' is expected}} 16 } 17 #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: 64 #pragma omp cancellation point sections 65 switch (argc) 66 case 1: { 67 #pragma omp cancellation point for 68 } 69 switch (argc) { 70 #pragma omp cancellation point taskgroup 71 case 1: 72 #pragma omp cancellation point parallel 73 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 } 83 label: 84 #pragma omp cancellation point parallel // expected-error {{'#pragma omp cancellation point' cannot be an immediate substatement}} 85 label1 : { 86 #pragma omp cancellation point sections 87 } 88 89 return 0; 90 } 91 92