mirror of git://gcc.gnu.org/git/gcc.git
				
				
				
			
		
			
				
	
	
		
			45 lines
		
	
	
		
			851 B
		
	
	
	
		
			C
		
	
	
	
			
		
		
	
	
			45 lines
		
	
	
		
			851 B
		
	
	
	
		
			C
		
	
	
	
| /* { 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;
 | |
| }
 |