// { dg-require-alias }

extern "C" void abort();

struct A
{
  A();
  int i;
};

extern A a;
#pragma omp threadprivate (a)
A a;

A &f()
{
  return a;
}

int j;
A::A(): i(j) { }

int main()
{
  j = 42;
  if (f().i != 42)
    abort ();
}