diff options
Diffstat (limited to 'clang/test/OpenMP')
| -rw-r--r-- | clang/test/OpenMP/parallel_ast_print.cpp | 12 | ||||
| -rw-r--r-- | clang/test/OpenMP/parallel_if_messages.cpp | 43 |
2 files changed, 49 insertions, 6 deletions
diff --git a/clang/test/OpenMP/parallel_ast_print.cpp b/clang/test/OpenMP/parallel_ast_print.cpp index f2fd2f7b69f..c197031c592 100644 --- a/clang/test/OpenMP/parallel_ast_print.cpp +++ b/clang/test/OpenMP/parallel_ast_print.cpp @@ -15,7 +15,7 @@ T tmain(T argc, T *argv) { static T a; #pragma omp parallel a=2; -#pragma omp parallel default(none), private(argc,b) firstprivate(argv) shared (d) +#pragma omp parallel default(none), private(argc,b) firstprivate(argv) shared (d) if (argc > 0) foo(); return 0; } @@ -24,21 +24,21 @@ T tmain(T argc, T *argv) { // CHECK-NEXT: static int a; // CHECK-NEXT: #pragma omp parallel // CHECK-NEXT: a = 2; -// CHECK-NEXT: #pragma omp parallel default(none) private(argc,b) firstprivate(argv) shared(d) +// CHECK-NEXT: #pragma omp parallel default(none) private(argc,b) firstprivate(argv) shared(d) if(argc > 0) // CHECK-NEXT: foo() // CHECK: template <typename T = float> float tmain(float argc, float *argv) { // CHECK-NEXT: float b = argc, c, d, e, f, g; // CHECK-NEXT: static float a; // CHECK-NEXT: #pragma omp parallel // CHECK-NEXT: a = 2; -// CHECK-NEXT: #pragma omp parallel default(none) private(argc,b) firstprivate(argv) shared(d) +// CHECK-NEXT: #pragma omp parallel default(none) private(argc,b) firstprivate(argv) shared(d) if(argc > 0) // CHECK-NEXT: foo() // CHECK: template <typename T> T tmain(T argc, T *argv) { // CHECK-NEXT: T b = argc, c, d, e, f, g; // CHECK-NEXT: static T a; // CHECK-NEXT: #pragma omp parallel // CHECK-NEXT: a = 2; -// CHECK-NEXT: #pragma omp parallel default(none) private(argc,b) firstprivate(argv) shared(d) +// CHECK-NEXT: #pragma omp parallel default(none) private(argc,b) firstprivate(argv) shared(d) if(argc > 0) // CHECK-NEXT: foo() int main (int argc, char **argv) { @@ -50,8 +50,8 @@ int main (int argc, char **argv) { // CHECK-NEXT: #pragma omp parallel a=2; // CHECK-NEXT: a = 2; -#pragma omp parallel default(none), private(argc,b) firstprivate(argv) -// CHECK-NEXT: #pragma omp parallel default(none) private(argc,b) firstprivate(argv) +#pragma omp parallel default(none), private(argc,b) firstprivate(argv) if (argc > 0) +// CHECK-NEXT: #pragma omp parallel default(none) private(argc,b) firstprivate(argv) if(argc > 0) foo(); // CHECK-NEXT: foo(); return tmain(b, &b) + tmain(x, &x); diff --git a/clang/test/OpenMP/parallel_if_messages.cpp b/clang/test/OpenMP/parallel_if_messages.cpp new file mode 100644 index 00000000000..eb4180d7f54 --- /dev/null +++ b/clang/test/OpenMP/parallel_if_messages.cpp @@ -0,0 +1,43 @@ +// RUN: %clang_cc1 -verify -fopenmp -ferror-limit 100 %s + +void foo() { +} + +bool foobool(int argc) { + return argc; +} + +struct S1; // expected-note {{declared here}} + +template <class T, class S> // expected-note {{declared here}} +int tmain(T argc, S **argv) { + #pragma omp parallel if // expected-error {{expected '(' after 'if'}} + #pragma omp parallel if ( // expected-error {{expected expression}} expected-error {{expected ')'}} expected-note {{to match this '('}} + #pragma omp parallel if () // expected-error {{expected expression}} + #pragma omp parallel if (argc // expected-error {{expected ')'}} expected-note {{to match this '('}} + #pragma omp parallel if (argc)) // expected-warning {{extra tokens at the end of '#pragma omp parallel' are ignored}} + #pragma omp parallel if (argc > 0 ? argv[1] : argv[2]) + #pragma omp parallel if (foobool(argc)), if (true) // expected-error {{directive '#pragma omp parallel' cannot contain more than one 'if' clause}} + #pragma omp parallel if (S) // expected-error {{'S' does not refer to a value}} + #pragma omp parallel if (argv[1]=2) // expected-error {{expected ')'}} expected-note {{to match this '('}} + #pragma omp parallel if(argc) + foo(); + + return 0; +} + +int main(int argc, char **argv) { + #pragma omp parallel if // expected-error {{expected '(' after 'if'}} + #pragma omp parallel if ( // expected-error {{expected expression}} expected-error {{expected ')'}} expected-note {{to match this '('}} + #pragma omp parallel if () // expected-error {{expected expression}} + #pragma omp parallel if (argc // expected-error {{expected ')'}} expected-note {{to match this '('}} + #pragma omp parallel if (argc)) // expected-warning {{extra tokens at the end of '#pragma omp parallel' are ignored}} + #pragma omp parallel if (argc > 0 ? argv[1] : argv[2]) + #pragma omp parallel if (foobool(argc)), if (true) // expected-error {{directive '#pragma omp parallel' cannot contain more than one 'if' clause}} + #pragma omp parallel if (S1) // expected-error {{'S1' does not refer to a value}} + #pragma omp parallel if (argv[1]=2) // expected-error {{expected ')'}} expected-note {{to match this '('}} + #pragma omp parallel if(if(tmain(argc, argv) // expected-error {{expected expression}} expected-error {{expected ')'}} expected-note {{to match this '('}} + foo(); + + return tmain(argc, argv); +} |

