diff options
Diffstat (limited to 'clang/test/OpenMP/nesting_of_regions.cpp')
| -rw-r--r-- | clang/test/OpenMP/nesting_of_regions.cpp | 102 |
1 files changed, 102 insertions, 0 deletions
diff --git a/clang/test/OpenMP/nesting_of_regions.cpp b/clang/test/OpenMP/nesting_of_regions.cpp index 7224ceb00c4..d8dcec5edf2 100644 --- a/clang/test/OpenMP/nesting_of_regions.cpp +++ b/clang/test/OpenMP/nesting_of_regions.cpp @@ -66,6 +66,11 @@ void foo() { #pragma omp taskwait bar(); } +#pragma omp parallel + { +#pragma omp flush + bar(); + } // SIMD DIRECTIVE #pragma omp simd @@ -156,6 +161,11 @@ void foo() { #pragma omp taskwait // expected-error {{OpenMP constructs may not be nested inside a simd region}} bar(); } +#pragma omp simd + for (int i = 0; i < 10; ++i) { +#pragma omp flush // expected-error {{OpenMP constructs may not be nested inside a simd region}} + bar(); + } // FOR DIRECTIVE #pragma omp for @@ -264,6 +274,11 @@ void foo() { #pragma omp taskwait bar(); } +#pragma omp for + for (int i = 0; i < 10; ++i) { +#pragma omp flush + bar(); + } // SECTIONS DIRECTIVE #pragma omp sections @@ -385,6 +400,10 @@ void foo() { { #pragma omp taskwait } +#pragma omp sections + { +#pragma omp flush + } // SECTION DIRECTIVE #pragma omp section // expected-error {{orphaned 'omp section' directives are prohibited, it must be closely nested to a sections region}} @@ -523,6 +542,14 @@ void foo() { bar(); } } +#pragma omp sections + { +#pragma omp section + { +#pragma omp flush + bar(); + } + } // SINGLE DIRECTIVE #pragma omp single @@ -623,6 +650,11 @@ void foo() { #pragma omp taskwait bar(); } +#pragma omp single + { +#pragma omp flush + bar(); + } // MASTER DIRECTIVE #pragma omp master @@ -723,6 +755,11 @@ void foo() { #pragma omp taskwait bar(); } +#pragma omp master + { +#pragma omp flush + bar(); + } // CRITICAL DIRECTIVE #pragma omp critical @@ -952,6 +989,11 @@ void foo() { #pragma omp taskwait bar(); } +#pragma omp parallel for + for (int i = 0; i < 10; ++i) { +#pragma omp flush + bar(); + } // PARALLEL SECTIONS DIRECTIVE #pragma omp parallel sections @@ -1059,6 +1101,10 @@ void foo() { { #pragma omp taskwait } +#pragma omp parallel sections + { +#pragma omp flush + } // TASK DIRECTIVE #pragma omp task @@ -1118,6 +1164,11 @@ void foo() { #pragma omp taskwait bar(); } +#pragma omp task + { +#pragma omp flush + bar(); + } } void foo() { @@ -1183,6 +1234,11 @@ void foo() { #pragma omp taskwait bar(); } +#pragma omp parallel + { +#pragma omp flush + bar(); + } // SIMD DIRECTIVE #pragma omp simd @@ -1266,6 +1322,11 @@ void foo() { #pragma omp taskwait // expected-error {{OpenMP constructs may not be nested inside a simd region}} bar(); } +#pragma omp simd + for (int i = 0; i < 10; ++i) { +#pragma omp flush // expected-error {{OpenMP constructs may not be nested inside a simd region}} + bar(); + } // FOR DIRECTIVE #pragma omp for @@ -1361,6 +1422,11 @@ void foo() { #pragma omp taskwait bar(); } +#pragma omp for + for (int i = 0; i < 10; ++i) { +#pragma omp flush + bar(); + } // SECTIONS DIRECTIVE #pragma omp sections @@ -1454,6 +1520,10 @@ void foo() { { #pragma omp taskwait } +#pragma omp sections + { +#pragma omp flush + } // SECTION DIRECTIVE #pragma omp section // expected-error {{orphaned 'omp section' directives are prohibited, it must be closely nested to a sections region}} @@ -1592,6 +1662,14 @@ void foo() { bar(); } } +#pragma omp sections + { +#pragma omp section + { +#pragma omp flush + bar(); + } + } // SINGLE DIRECTIVE #pragma omp single @@ -1682,6 +1760,11 @@ void foo() { #pragma omp taskwait bar(); } +#pragma omp single + { +#pragma omp flush + bar(); + } // MASTER DIRECTIVE #pragma omp master @@ -1782,6 +1865,11 @@ void foo() { #pragma omp taskwait bar(); } +#pragma omp master + { +#pragma omp flush + bar(); + } // CRITICAL DIRECTIVE #pragma omp critical @@ -2010,6 +2098,11 @@ void foo() { #pragma omp taskwait bar(); } +#pragma omp parallel for + for (int i = 0; i < 10; ++i) { +#pragma omp flush + bar(); + } // PARALLEL SECTIONS DIRECTIVE #pragma omp parallel sections @@ -2113,6 +2206,10 @@ void foo() { { #pragma omp taskwait } +#pragma omp parallel sections + { +#pragma omp flush + } // TASK DIRECTIVE #pragma omp task @@ -2171,6 +2268,11 @@ void foo() { #pragma omp taskwait bar(); } +#pragma omp task + { +#pragma omp flush + bar(); + } return foo<int>(); } |

