pr45784.c 821 B

1234567891011121314151617181920212223242526272829303132333435363738394041
  1. /* PR c/45784 */
  2. /* { dg-do run } */
  3. void
  4. foo (int n)
  5. {
  6. char *p, vla[2 * n];
  7. int i;
  8. #pragma omp parallel for
  9. for (p = vla; p < vla + (sizeof (vla) / sizeof (vla[0])); p++)
  10. *p = ' ';
  11. #pragma omp parallel for
  12. for (i = 0; i < 2 * n; i++)
  13. if (vla[i] != ' ')
  14. __builtin_abort ();
  15. }
  16. void
  17. bar (int n)
  18. {
  19. char *p, vla1[n], vla2[n * 2], vla3[n * 3], vla4[n * 4];
  20. int i;
  21. __builtin_memset (vla4, ' ', n * 4);
  22. #pragma omp parallel for
  23. for (p = vla4 + sizeof (vla1); p < vla4 + sizeof (vla3) - sizeof (vla2) + sizeof (vla1); p += sizeof (vla4) / sizeof (vla4))
  24. p[0] = '!';
  25. #pragma omp parallel for
  26. for (i = 0; i < n * 4; i++)
  27. if (vla4[i] != ((i >= n && i < 2 * n) ? '!' : ' '))
  28. __builtin_abort ();
  29. }
  30. int
  31. main ()
  32. {
  33. volatile int n;
  34. n = 128;
  35. foo (n);
  36. bar (n);
  37. return 0;
  38. }