diff options
Diffstat (limited to 'clang/test/OpenMP')
-rw-r--r-- | clang/test/OpenMP/ordered_ast_print.cpp | 27 | ||||
-rw-r--r-- | clang/test/OpenMP/ordered_messages.cpp | 42 | ||||
-rw-r--r-- | clang/test/OpenMP/task_depend_messages.cpp | 2 |
3 files changed, 70 insertions, 1 deletions
diff --git a/clang/test/OpenMP/ordered_ast_print.cpp b/clang/test/OpenMP/ordered_ast_print.cpp index 6328ec0d766..1c68540db67 100644 --- a/clang/test/OpenMP/ordered_ast_print.cpp +++ b/clang/test/OpenMP/ordered_ast_print.cpp @@ -42,6 +42,11 @@ T tmain (T argc) { { a=2; } + #pragma omp parallel for ordered(1) + for (int i =0 ; i < argc; ++i) { + #pragma omp ordered depend(source) + a = 2; + } return (0); } @@ -76,7 +81,11 @@ T tmain (T argc) { // CHECK-NEXT: { // CHECK-NEXT: a = 2; // CHECK-NEXT: } - +// CHECK-NEXT: #pragma omp parallel for ordered(1) +// CHECK-NEXT: for (int i = 0; i < argc; ++i) { +// CHECK-NEXT: #pragma omp ordered depend(source) +// CHECK-NEXT: a = 2; +// CHECK-NEXT: } // CHECK: static T a; // CHECK-NEXT: #pragma omp for ordered // CHECK-NEXT: for (int i = 0; i < argc; ++i) @@ -108,7 +117,13 @@ T tmain (T argc) { // CHECK-NEXT: { // CHECK-NEXT: a = 2; // CHECK-NEXT: } +// CHECK-NEXT: #pragma omp parallel for ordered(1) +// CHECK-NEXT: for (int i = 0; i < argc; ++i) { +// CHECK-NEXT: #pragma omp ordered depend(source) +// CHECK-NEXT: a = 2; +// CHECK-NEXT: } +// CHECK-LABEL: int main( int main (int argc, char **argv) { int b = argc, c, d, e, f, g; static int a; @@ -143,6 +158,11 @@ int main (int argc, char **argv) { { a=2; } + #pragma omp parallel for ordered(1) + for (int i =0 ; i < argc; ++i) { + #pragma omp ordered depend(source) + a = 2; + } // CHECK-NEXT: #pragma omp for ordered // CHECK-NEXT: for (int i = 0; i < argc; ++i) // CHECK-NEXT: #pragma omp ordered @@ -173,6 +193,11 @@ int main (int argc, char **argv) { // CHECK-NEXT: { // CHECK-NEXT: a = 2; // CHECK-NEXT: } +// CHECK-NEXT: #pragma omp parallel for ordered(1) +// CHECK-NEXT: for (int i = 0; i < argc; ++i) { +// CHECK-NEXT: #pragma omp ordered depend(source) +// CHECK-NEXT: a = 2; +// CHECK-NEXT: } return tmain(argc); } diff --git a/clang/test/OpenMP/ordered_messages.cpp b/clang/test/OpenMP/ordered_messages.cpp index 559a6b06f22..793e9ecd56f 100644 --- a/clang/test/OpenMP/ordered_messages.cpp +++ b/clang/test/OpenMP/ordered_messages.cpp @@ -90,6 +90,27 @@ T foo() { { foo(); } + #pragma omp ordered depend(source) // expected-error {{OpenMP constructs may not be nested inside a simd region}} + } +#pragma omp parallel for ordered + for (int i = 0; i < 10; ++i) { + #pragma omp ordered depend(source) // expected-error {{'ordered' directive with 'depend' clause cannot be closely nested inside ordered region without specified parameter}} + } +#pragma omp parallel for ordered(1) // expected-note 3 {{'ordered' clause with specified parameter}} + for (int i = 0; i < 10; ++i) { + for (int j = 0; j < 10; ++j) { +#pragma omp ordered depend // expected-error {{expected '(' after 'depend'}} expected-error {{'ordered' directive without any clauses cannot be closely nested inside ordered region with specified parameter}} +#pragma omp ordered depend( // expected-error {{expected ')'}} expected-error {{expected 'source' in OpenMP clause 'depend'}} expected-error {{'ordered' directive without any clauses cannot be closely nested inside ordered region with specified parameter}} expected-warning {{missing ':' or ')' after dependency type - ignoring}} expected-note {{to match this '('}} +#pragma omp ordered depend(source // expected-error {{expected ')'}} expected-note {{to match this '('}} +#pragma omp ordered depend(source) + if (i == j) +#pragma omp ordered depend(source) // expected-error {{'#pragma omp ordered' with 'depend' clause cannot be an immediate substatement}} + ; +#pragma omp ordered depend(source) threads // expected-error {{'depend' clauses cannot be mixed with 'threads' clause}} +#pragma omp ordered simd depend(source) // expected-error {{'depend' clauses cannot be mixed with 'simd' clause}} +#pragma omp ordered depend(source) depend(source) // expected-error {{directive '#pragma omp ordered' cannot contain more than one 'depend' clause with 'source' dependence}} +#pragma omp ordered depend(in : i) // expected-error {{expected 'source' in OpenMP clause 'depend'}} expected-error {{'ordered' directive without any clauses cannot be closely nested inside ordered region with specified parameter}} + } } return T(); @@ -182,6 +203,27 @@ int foo() { { foo(); } + #pragma omp ordered depend(source) // expected-error {{OpenMP constructs may not be nested inside a simd region}} + } +#pragma omp parallel for ordered + for (int i = 0; i < 10; ++i) { + #pragma omp ordered depend(source) // expected-error {{'ordered' directive with 'depend' clause cannot be closely nested inside ordered region without specified parameter}} + } +#pragma omp parallel for ordered(1) // expected-note 3 {{'ordered' clause with specified parameter}} + for (int i = 0; i < 10; ++i) { + for (int j = 0; j < 10; ++j) { +#pragma omp ordered depend // expected-error {{expected '(' after 'depend'}} expected-error {{'ordered' directive without any clauses cannot be closely nested inside ordered region with specified parameter}} +#pragma omp ordered depend( // expected-error {{expected ')'}} expected-error {{expected 'source' in OpenMP clause 'depend'}} expected-error {{'ordered' directive without any clauses cannot be closely nested inside ordered region with specified parameter}} expected-warning {{missing ':' or ')' after dependency type - ignoring}} expected-note {{to match this '('}} +#pragma omp ordered depend(source // expected-error {{expected ')'}} expected-note {{to match this '('}} +#pragma omp ordered depend(source) + if (i == j) +#pragma omp ordered depend(source) // expected-error {{'#pragma omp ordered' with 'depend' clause cannot be an immediate substatement}} + ; +#pragma omp ordered depend(source) threads // expected-error {{'depend' clauses cannot be mixed with 'threads' clause}} +#pragma omp ordered simd depend(source) // expected-error {{'depend' clauses cannot be mixed with 'simd' clause}} +#pragma omp ordered depend(source) depend(source) // expected-error {{directive '#pragma omp ordered' cannot contain more than one 'depend' clause with 'source' dependence}} +#pragma omp ordered depend(in : i) // expected-error {{expected 'source' in OpenMP clause 'depend'}} expected-error {{'ordered' directive without any clauses cannot be closely nested inside ordered region with specified parameter}} + } } return foo<int>(); diff --git a/clang/test/OpenMP/task_depend_messages.cpp b/clang/test/OpenMP/task_depend_messages.cpp index be96d8ec65f..39bf4847890 100644 --- a/clang/test/OpenMP/task_depend_messages.cpp +++ b/clang/test/OpenMP/task_depend_messages.cpp @@ -24,6 +24,8 @@ int main(int argc, char **argv, char *env[]) { #pragma omp task depend ( // expected-error {{expected 'in', 'out' or 'inout' in OpenMP clause 'depend'}} expected-error {{expected ')'}} expected-note {{to match this '('}} expected-warning {{missing ':' after dependency type - ignoring}} #pragma omp task depend () // expected-error {{expected 'in', 'out' or 'inout' in OpenMP clause 'depend'}} expected-warning {{missing ':' after dependency type - ignoring}} #pragma omp task depend (argc // expected-error {{expected 'in', 'out' or 'inout' in OpenMP clause 'depend'}} expected-warning {{missing ':' after dependency type - ignoring}} expected-error {{expected ')'}} expected-note {{to match this '('}} + #pragma omp task depend (source : argc) // expected-error {{expected 'in', 'out' or 'inout' in OpenMP clause 'depend'}} + #pragma omp task depend (source) // expected-error {{expected expression}} expected-warning {{missing ':' after dependency type - ignoring}} #pragma omp task depend (in : argc)) // expected-warning {{extra tokens at the end of '#pragma omp task' are ignored}} #pragma omp task depend (out: ) // expected-error {{expected expression}} #pragma omp task depend (inout : foobool(argc)), depend (in, argc) // expected-error {{expected variable name, array element or array section}} expected-warning {{missing ':' after dependency type - ignoring}} expected-error {{expected expression}} |