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