166963Speter/* PR middle-end/52547 */
2184989Srafan/* { dg-do run } */
366963Speter
466963Speterextern void abort (void);
566963Speter
666963Speter__attribute__((noinline, noclone)) int
766963Speterbaz (int *x, int (*fn) (int *))
866963Speter{
966963Speter  return fn (x);
1066963Speter}
1166963Speter
1266963Speter__attribute__((noinline, noclone)) int
1366963Speterfoo (int x, int *y)
1466963Speter{
1566963Speter  int i, e = 0;
1666963Speter#pragma omp parallel for reduction(|:e)
1766963Speter  for (i = 0; i < x; ++i)
1866963Speter    {
1966963Speter      __label__ lab;
2066963Speter      int bar (int *z) { return z - y; }
2166963Speter      if (baz (&y[i], bar) != i)
2266963Speter	e |= 1;
2366963Speter    }
2466963Speter  return e;
2566963Speter}
2666963Speter
2766963Speterint
2866963Spetermain ()
2966963Speter{
3066963Speter  int a[100], i;
3166963Speter  for (i = 0; i < 100; i++)
3266963Speter    a[i] = i;
3366963Speter  if (foo (100, a))
3466963Speter    abort ();
3566963Speter  return 0;
3666963Speter}
3766963Speter