diff options
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.c | 32 |
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; +} |