1 // RUN: %clang_cc1 -verify -fopenmp -ferror-limit 100 %s 2 3 // RUN: %clang_cc1 -verify -fopenmp-simd -ferror-limit 100 %s 4 5 int main(int argc, char **argv) { 6 #pragma omp cancellation // expected-error {{expected an OpenMP directive}} 7 #pragma omp cancellation point // expected-error {{one of 'for', 'parallel', 'sections' or 'taskgroup' is expected}} 8 ; 9 #pragma omp parallel 10 { 11 #pragma omp cancellation point // expected-error {{one of 'for', 'parallel', 'sections' or 'taskgroup' is expected}} 12 } 13 #pragma omp cancellation point parallel untied // expected-error {{unexpected OpenMP clause 'untied' in directive '#pragma omp cancellation point'}} 14 #pragma omp cancellation point unknown // expected-error {{one of 'for', 'parallel', 'sections' or 'taskgroup' is expected}} 15 #pragma omp parallel 16 { 17 #pragma omp cancellation point unknown // expected-error {{one of 'for', 'parallel', 'sections' or 'taskgroup' is expected}} 18 } 19 #pragma omp cancellation point sections( // expected-warning {{extra tokens at the end of '#pragma omp cancellation point' are ignored}} 20 #pragma omp cancellation point for, ) // expected-warning {{extra tokens at the end of '#pragma omp cancellation point' are ignored}} 21 #pragma omp cancellation point taskgroup() // expected-warning {{extra tokens at the end of '#pragma omp cancellation point' are ignored}} 22 #pragma omp cancellation point parallel, if // expected-warning {{extra tokens at the end of '#pragma omp cancellation point' are ignored}} 23 if (argc) 24 #pragma omp cancellation point for // expected-error {{'#pragma omp cancellation point' cannot be an immediate substatement}} 25 if (argc) { 26 #pragma omp taskgroup 27 #pragma omp task 28 #pragma omp parallel 29 { 30 #pragma omp cancellation point 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 cancellation point taskgroup // expected-error {{region cannot be closely nested inside 'taskgroup' region}} 37 } 38 #pragma omp parallel 39 { 40 #pragma omp cancellation point for // expected-error {{region cannot be closely nested inside 'parallel' region}} 41 } 42 #pragma omp task 43 { 44 #pragma omp cancellation point sections // expected-error {{region cannot be closely nested inside 'task' region}} 45 } 46 #pragma omp sections 47 { 48 #pragma omp cancellation point parallel // expected-error {{region cannot be closely nested inside 'sections' region}} 49 } 50 while (argc) 51 #pragma omp cancellation point for // expected-error {{'#pragma omp cancellation point' cannot be an immediate substatement}} 52 while (argc) { 53 #pragma omp cancellation point sections 54 } 55 do 56 #pragma omp cancellation point parallel // expected-error {{'#pragma omp cancellation point' cannot be an immediate substatement}} 57 while (argc) 58 ; 59 do { 60 #pragma omp cancellation point taskgroup 61 } while (argc); 62 switch (argc) 63 #pragma omp cancellation point parallel // expected-error {{'#pragma omp cancellation point' cannot be an immediate substatement}} 64 switch (argc) 65 case 1: 66 #pragma omp cancellation point sections 67 switch (argc) 68 case 1: { 69 #pragma omp cancellation point for 70 } 71 switch (argc) { 72 #pragma omp cancellation point taskgroup 73 case 1: 74 #pragma omp cancellation point parallel 75 break; 76 default: { 77 #pragma omp cancellation point sections 78 } break; 79 } 80 for (;;) 81 #pragma omp cancellation point for // expected-error {{'#pragma omp cancellation point' cannot be an immediate substatement}} 82 for (;;) { 83 #pragma omp cancellation point taskgroup 84 } 85 label: 86 #pragma omp cancellation point parallel // expected-error {{'#pragma omp cancellation point' cannot be an immediate substatement}} 87 label1 : { 88 #pragma omp cancellation point sections 89 } 90 91 return 0; 92 } 93 94