| /* 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; | |
| } |