mirror of git://gcc.gnu.org/git/gcc.git
				
				
				
			
		
			
				
	
	
		
			54 lines
		
	
	
		
			628 B
		
	
	
	
		
			C
		
	
	
	
			
		
		
	
	
			54 lines
		
	
	
		
			628 B
		
	
	
	
		
			C
		
	
	
	
| extern void abort (void);
 | |
| 
 | |
| int
 | |
| f1 (void)
 | |
| {
 | |
|   int a = 6, e = 0;
 | |
|   int nested (int x)
 | |
|   {
 | |
|     return x + a;
 | |
|   }
 | |
|   #pragma omp task
 | |
|   {
 | |
|     int n = nested (5);
 | |
|     if (n != 11)
 | |
|       #pragma omp atomic
 | |
| 	e += 1;
 | |
|   }
 | |
|   #pragma omp taskwait
 | |
|   return e;
 | |
| }
 | |
| 
 | |
| int
 | |
| f2 (void)
 | |
| {
 | |
|   int a = 6, e = 0;
 | |
|   int nested (int x)
 | |
|   {
 | |
|     return x + a;
 | |
|   }
 | |
|   a = nested (4);
 | |
|   #pragma omp task
 | |
|   {
 | |
|     if (a != 10)
 | |
|       #pragma omp atomic
 | |
| 	e += 1;
 | |
|   }
 | |
|   #pragma omp taskwait
 | |
|   return e;
 | |
| }
 | |
| 
 | |
| int
 | |
| main (void)
 | |
| {
 | |
|   int e = 0;
 | |
|   #pragma omp parallel num_threads(4) reduction(+:e)
 | |
|   {
 | |
|     e += f1 ();
 | |
|     e += f2 ();
 | |
|   }
 | |
|   if (e)
 | |
|     abort ();
 | |
|   return 0;
 | |
| }
 |