aboutsummaryrefslogtreecommitdiffstats
path: root/gcc-4.9/libgomp/testsuite/libgomp.c/udr-3.c
diff options
context:
space:
mode:
Diffstat (limited to 'gcc-4.9/libgomp/testsuite/libgomp.c/udr-3.c')
-rw-r--r--gcc-4.9/libgomp/testsuite/libgomp.c/udr-3.c32
1 files changed, 32 insertions, 0 deletions
diff --git a/gcc-4.9/libgomp/testsuite/libgomp.c/udr-3.c b/gcc-4.9/libgomp/testsuite/libgomp.c/udr-3.c
new file mode 100644
index 000000000..e0a5b8764
--- /dev/null
+++ b/gcc-4.9/libgomp/testsuite/libgomp.c/udr-3.c
@@ -0,0 +1,32 @@
+/* { dg-do run } */
+
+extern void abort ();
+
+struct S;
+void foo (struct S *, struct S *);
+#pragma omp declare reduction (+:struct S:foo (&omp_out, &omp_in))
+struct S { int s; };
+
+void
+foo (struct S *x, struct S *y)
+{
+ x->s += y->s;
+}
+
+int
+main ()
+{
+ struct S s;
+ int i = 0;
+ s.s = 0;
+ #pragma omp parallel reduction (+:s, i)
+ {
+ if (s.s != 0)
+ abort ();
+ s.s = 2;
+ i = 1;
+ }
+ if (s.s != 2 * i)
+ abort ();
+ return 0;
+}