1 /* { dg-do compile } */
2 /* { dg-options "-fopenmp" } */
3 
4 struct S {};
5 void foo (void *, void *);
6 void bar (void *, void *);
7 void baz (void *);
8 #pragma omp declare reduction(+:struct S:foo (&omp_out, &omp_in))initializer(bar(&omp_priv, &omp_orig))
9 
10 void
test(void)11 test (void)
12 {
13   struct S a, b[10];
14   #pragma omp parallel reduction(+:a)
15     baz (&a);
16 }
17