// PR middle-end/102431
struct S { S (); ~S (); S (const S &); void add (const S &); int s; } s;
void bar (int, S &);
#pragma omp declare reduction (+:S:omp_out.add (omp_in))
void
foo ()
{
  #pragma omp loop bind(teams) reduction(+:s)
  for (int i = 0; i < 8; i++)
    bar (i, s);
}