pr80853.c 490 B

1234567891011121314151617181920212223242526272829
  1. /* PR middle-end/80853 */
  2. /* { dg-do run } */
  3. __attribute__((noinline, noclone)) void
  4. foo (int *p)
  5. {
  6. #pragma omp for reduction(+:p[:4])
  7. for (int i = 0; i < 64; i++)
  8. {
  9. p[0] += i;
  10. p[1] += i / 2;
  11. p[2] += 2 * i;
  12. p[3] += 3 * i;
  13. }
  14. }
  15. int
  16. main ()
  17. {
  18. int p[4] = { 0, 0, 0, 0 };
  19. #pragma omp parallel
  20. foo (p);
  21. if (p[0] != 63 * 64 / 2
  22. || p[1] != 31 * 32
  23. || p[2] != 63 * 64
  24. || p[3] != 3 * 63 * 64 / 2)
  25. __builtin_abort ();
  26. return 0;
  27. }