summaryrefslogtreecommitdiffstats
path: root/clang/test/OpenMP
diff options
context:
space:
mode:
authorAlexey Bataev <a.bataev@hotmail.com>2014-02-13 05:29:23 +0000
committerAlexey Bataev <a.bataev@hotmail.com>2014-02-13 05:29:23 +0000
commitaadd52e5cc8776ed65c0850876a68a1f10a92f10 (patch)
tree6789802725add097bbba8e1e1ab597a4f697a863 /clang/test/OpenMP
parent0e3b5e0b20698558be7a30b42f3d245bf6a4af54 (diff)
downloadbcm5719-llvm-aadd52e5cc8776ed65c0850876a68a1f10a92f10.tar.gz
bcm5719-llvm-aadd52e5cc8776ed65c0850876a68a1f10a92f10.zip
[OPENMP] 'if' clause support (no CodeGen support)
llvm-svn: 201297
Diffstat (limited to 'clang/test/OpenMP')
-rw-r--r--clang/test/OpenMP/parallel_ast_print.cpp12
-rw-r--r--clang/test/OpenMP/parallel_if_messages.cpp43
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);
+}
OpenPOWER on IntegriCloud