pr46032.c 851 B

1234567891011121314151617181920212223242526272829303132333435363738394041424344
  1. /* { dg-do run } */
  2. /* { dg-options "-O2 -ftree-vectorize -std=c99 -fipa-pta" } */
  3. extern void abort (void);
  4. #define nEvents 1000
  5. static void __attribute__((noinline, noclone, optimize("-fno-tree-vectorize")))
  6. init (unsigned *results, unsigned *pData)
  7. {
  8. unsigned int i;
  9. for (i = 0; i < nEvents; ++i)
  10. pData[i] = i % 3;
  11. }
  12. static void __attribute__((noinline, noclone, optimize("-fno-tree-vectorize")))
  13. check (unsigned *results)
  14. {
  15. unsigned sum = 0;
  16. for (int idx = 0; idx < (int)nEvents; idx++)
  17. sum += results[idx];
  18. if (sum != 1998)
  19. abort ();
  20. }
  21. int
  22. main (void)
  23. {
  24. unsigned results[nEvents];
  25. unsigned pData[nEvents];
  26. unsigned coeff = 2;
  27. init (&results[0], &pData[0]);
  28. #pragma omp parallel for
  29. for (int idx = 0; idx < (int)nEvents; idx++)
  30. results[idx] = coeff * pData[idx];
  31. check (&results[0]);
  32. return 0;
  33. }