1/* PR middle-end/52547 */ 2/* { dg-do run } */ 3 4extern void abort (void); 5 6__attribute__((noinline, noclone)) int 7baz (int *x, int (*fn) (int *)) 8{ 9 return fn (x); 10} 11 12__attribute__((noinline, noclone)) int 13foo (int x, int *y) 14{ 15 int i, e = 0; 16#pragma omp parallel for reduction(|:e) 17 for (i = 0; i < x; ++i) 18 { 19 __label__ lab; 20 int bar (int *z) { return z - y; } 21 if (baz (&y[i], bar) != i) 22 e |= 1; 23 } 24 return e; 25} 26 27int 28main () 29{ 30 int a[100], i; 31 for (i = 0; i < 100; i++) 32 a[i] = i; 33 if (foo (100, a)) 34 abort (); 35 return 0; 36} 37