mirror of git://gcc.gnu.org/git/gcc.git
				
				
				
			
		
			
				
	
	
		
			163 lines
		
	
	
		
			2.4 KiB
		
	
	
	
		
			C
		
	
	
	
			
		
		
	
	
			163 lines
		
	
	
		
			2.4 KiB
		
	
	
	
		
			C
		
	
	
	
| /* PR debug/36617 */
 | |
| /* { dg-do run } */
 | |
| /* { dg-options "-g -O0" } */
 | |
| 
 | |
| int
 | |
| f1 (void)
 | |
| {
 | |
|   int v1i, v1j, v1k, v1l = 0;
 | |
|   v1i = 6;
 | |
|   v1j = 8;
 | |
|   #pragma omp parallel private (v1k) firstprivate (v1j) shared (v1i) reduction (+:v1l)
 | |
|   {
 | |
|     v1k = v1i + v1j;
 | |
|     {
 | |
|       int v1m = 1;
 | |
|       v1l = v1m;
 | |
|     }
 | |
|   }
 | |
|   return v1l;
 | |
| }
 | |
| 
 | |
| int v2k = 9;
 | |
| 
 | |
| int
 | |
| f2 (void)
 | |
| {
 | |
|   int v2i = 6, v2j = 7;
 | |
|   #pragma omp single private (v2i) firstprivate (v2k)
 | |
|   {
 | |
|     int v2l = v2j + v2k;
 | |
|     v2i = 8;
 | |
|     v2k = 10;
 | |
|     v2j = v2l + v2i;
 | |
|   }
 | |
|   return v2i + v2j;
 | |
| }
 | |
| 
 | |
| int
 | |
| f3 (void)
 | |
| {
 | |
|   int v3i = 6, v3j = 7, v3k = 9;
 | |
|   #pragma omp parallel
 | |
|   {
 | |
|     #pragma omp master
 | |
|       v3i++;
 | |
|     #pragma omp single private (v3i) firstprivate (v3k)
 | |
|     {
 | |
|       int v3l = v3j + v3k;
 | |
|       v3i = 8;
 | |
|       v3k = 10;
 | |
|       v3j = v3l + v3i;
 | |
|     }
 | |
|     #pragma omp atomic
 | |
|       v3k++;
 | |
|   }
 | |
|   return v3i + v3j;
 | |
| }
 | |
| 
 | |
| int v4k = 9, v4l = 0;
 | |
| 
 | |
| int
 | |
| f4 (void)
 | |
| {
 | |
|   int v4i = 6, v4j = 7, v4n = 0;
 | |
|   #pragma omp sections private (v4i) firstprivate (v4k) reduction (+:v4l)
 | |
|   {
 | |
|     #pragma omp section
 | |
|     {
 | |
|       int v4m = v4j + v4k;
 | |
|       v4i = 8;
 | |
|       v4k = 10;
 | |
|       v4l++;
 | |
|       v4n = v4m + v4i;
 | |
|     }
 | |
|     #pragma omp section
 | |
|     {
 | |
|       int v4o = v4j + v4k;
 | |
|       v4i = 10;
 | |
|       v4k = 11;
 | |
|       v4l++;
 | |
|     }
 | |
|   }
 | |
|   return v4i + v4j + v4l + v4n;
 | |
| }
 | |
| 
 | |
| int
 | |
| f5 (void)
 | |
| {
 | |
|   int v5i = 6, v5j = 7, v5k = 9, v5l = 0, v5n = 0, v5p = 0;
 | |
|   #pragma omp parallel
 | |
|   {
 | |
|     #pragma omp master
 | |
|       v5p++;
 | |
|     #pragma omp sections private (v5i) firstprivate (v5k) reduction (+:v5l)
 | |
|     {
 | |
|       #pragma omp section
 | |
|       {
 | |
| 	int v5m = v5j + v5k;
 | |
| 	v5i = 8;
 | |
| 	v5k = 10;
 | |
| 	v5l++;
 | |
| 	v5n = v5m + v5i;
 | |
|       }
 | |
|       #pragma omp section
 | |
|       {
 | |
| 	int v5o = v5j + v5k;
 | |
| 	v5i = 10;
 | |
| 	v5k = 11;
 | |
| 	v5l++;
 | |
|       }
 | |
|     }
 | |
|   }
 | |
|   return v5i + v5j + v5l + v5n + v5p;
 | |
| }
 | |
| 
 | |
| int v6k = 9, v6l = 0;
 | |
| 
 | |
| int
 | |
| f6 (void)
 | |
| {
 | |
|   int v6i = 6, v6j = 7, v6n = 0;
 | |
|   #pragma omp for private (v6i) firstprivate (v6k) reduction (+:v6l)
 | |
|   for (v6n = 0; v6n < 3; v6n++)
 | |
|     {
 | |
|       int v6m = v6j + v6k;
 | |
|       v6i = 8;
 | |
|       v6l++;
 | |
|     }
 | |
|   return v6i + v6j + v6k + v6l + v6n;
 | |
| }
 | |
| 
 | |
| int
 | |
| f7 (void)
 | |
| {
 | |
|   int v7i = 6, v7j = 7, v7k = 9, v7l = 0, v7n = 0, v7o = 1;
 | |
|   #pragma omp parallel
 | |
|   {
 | |
|     #pragma omp master
 | |
|       v7o++;
 | |
|     #pragma omp for private (v7i) firstprivate (v7k) reduction (+:v7l)
 | |
|     for (v7n = 0; v7n < 3; v7n++)
 | |
|       {
 | |
| 	int v7m = v7j + v7k;
 | |
| 	v7i = 8;
 | |
| 	v7l++;
 | |
|       }
 | |
|   }
 | |
|   return v7i + v7j + v7k + v7l + v7n;
 | |
| }
 | |
| 
 | |
| int
 | |
| main (void)
 | |
| {
 | |
|   f1 ();
 | |
|   f2 ();
 | |
|   f3 ();
 | |
|   f4 ();
 | |
|   f5 ();
 | |
|   f6 ();
 | |
|   f7 ();
 | |
|   return 0;
 | |
| }
 |