123456789101112131415161718192021222324252627282930313233 |
- /* { 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;
- }
|