summaryrefslogtreecommitdiffstats
path: root/clang/test/OpenMP/nesting_of_regions.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'clang/test/OpenMP/nesting_of_regions.cpp')
-rw-r--r--clang/test/OpenMP/nesting_of_regions.cpp102
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>();
}
OpenPOWER on IntegriCloud