pr52547.c 562 B

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