Home | History | Annotate | Download | only in OpenMP
      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 cancel // expected-error {{one of 'for', 'parallel', 'sections' or 'taskgroup' is expected}}
      6   ;
      7 #pragma omp cancel parallel untied // expected-error {{unexpected OpenMP clause 'untied' in directive '#pragma omp cancel'}}
      8 #pragma omp cancel unknown         // expected-error {{one of 'for', 'parallel', 'sections' or 'taskgroup' is expected}}
      9 #pragma omp cancel sections(       // expected-warning {{extra tokens at the end of '#pragma omp cancel' are ignored}}
     10 #pragma omp cancel for, )          // expected-warning {{extra tokens at the end of '#pragma omp cancel' are ignored}}
     11 #pragma omp cancel taskgroup()     // expected-warning {{extra tokens at the end of '#pragma omp cancel' are ignored}}
     12 #pragma omp cancel parallel, if    // expected-warning {{extra tokens at the end of '#pragma omp cancel' are ignored}}
     13   if (argc)
     14 #pragma omp cancel for // expected-error {{'#pragma omp cancel' cannot be an immediate substatement}}
     15     if (argc) {
     16 #pragma omp taskgroup
     17 #pragma omp task
     18 #pragma omp parallel
     19       {
     20 #pragma omp cancel taskgroup // expected-error {{region cannot be closely nested inside 'parallel' region}}
     21       }
     22     }
     23 #pragma omp parallel
     24 #pragma omp taskgroup
     25   {
     26 #pragma omp cancel taskgroup // expected-error {{region cannot be closely nested inside 'taskgroup' region}}
     27   }
     28 #pragma omp parallel
     29   {
     30 #pragma omp cancel for // expected-error {{region cannot be closely nested inside 'parallel' region}}
     31   }
     32 #pragma omp task
     33   {
     34 #pragma omp cancel sections // expected-error {{region cannot be closely nested inside 'task' region}}
     35   }
     36 #pragma omp sections
     37   {
     38 #pragma omp cancel parallel // expected-error {{region cannot be closely nested inside 'sections' region}}
     39   }
     40   while (argc)
     41 #pragma omp cancel for // expected-error {{'#pragma omp cancel' cannot be an immediate substatement}}
     42     while (argc) {
     43 #pragma omp cancel sections
     44     }
     45   do
     46 #pragma omp cancel parallel // expected-error {{'#pragma omp cancel' cannot be an immediate substatement}}
     47     while (argc)
     48       ;
     49   do {
     50 #pragma omp cancel taskgroup
     51   } while (argc);
     52   switch (argc)
     53 #pragma omp cancel parallel // expected-error {{'#pragma omp cancel' cannot be an immediate substatement}}
     54     switch (argc)
     55     case 1:
     56 #pragma omp cancel sections
     57   switch (argc)
     58   case 1: {
     59 #pragma omp cancel for
     60   }
     61   switch (argc) {
     62 #pragma omp cancel taskgroup
     63   case 1:
     64 #pragma omp cancel parallel
     65     break;
     66   default: {
     67 #pragma omp cancel sections
     68   } break;
     69   }
     70   for (;;)
     71 #pragma omp cancel for // expected-error {{'#pragma omp cancel' cannot be an immediate substatement}}
     72     for (;;) {
     73 #pragma omp cancel taskgroup
     74     }
     75 label:
     76 #pragma omp cancel parallel // expected-error {{'#pragma omp cancel' cannot be an immediate substatement}}
     77 label1 : {
     78 #pragma omp cancel sections
     79 }
     80 
     81   return 0;
     82 }
     83 
     84