| /* { dg-do run } */ |
| /* { dg-options "-O2 -ftree-vectorize -std=c99 -fipa-pta" } */ |
| |
| |
| extern void abort (void); |
| |
| #define nEvents 1000 |
| |
| static void __attribute__((noinline, noclone, optimize("-fno-tree-vectorize"))) |
| init (unsigned *results, unsigned *pData) |
| { |
| unsigned int i; |
| for (i = 0; i < nEvents; ++i) |
| pData[i] = i % 3; |
| } |
| |
| static void __attribute__((noinline, noclone, optimize("-fno-tree-vectorize"))) |
| check (unsigned *results) |
| { |
| unsigned sum = 0; |
| for (int idx = 0; idx < (int)nEvents; idx++) |
| sum += results[idx]; |
| |
| if (sum != 1998) |
| abort (); |
| } |
| |
| int |
| main (void) |
| { |
| unsigned results[nEvents]; |
| unsigned pData[nEvents]; |
| unsigned coeff = 2; |
| |
| init (&results[0], &pData[0]); |
| |
| #pragma omp parallel for |
| for (int idx = 0; idx < (int)nEvents; idx++) |
| results[idx] = coeff * pData[idx]; |
| |
| check (&results[0]); |
| |
| return 0; |
| } |