/* PR middle-end/52547 */ | |
/* { dg-do run } */ | |
extern void abort (void); | |
__attribute__((noinline, noclone)) int | |
baz (int *x, int (*fn) (int *)) | |
{ | |
return fn (x); | |
} | |
__attribute__((noinline, noclone)) int | |
foo (int x, int *y) | |
{ | |
int i, e = 0; | |
#pragma omp parallel for reduction(|:e) | |
for (i = 0; i < x; ++i) | |
{ | |
__label__ lab; | |
int bar (int *z) { return z - y; } | |
if (baz (&y[i], bar) != i) | |
e |= 1; | |
} | |
return e; | |
} | |
int | |
main () | |
{ | |
int a[100], i; | |
for (i = 0; i < 100; i++) | |
a[i] = i; | |
if (foo (100, a)) | |
abort (); | |
return 0; | |
} |