mirror of git://gcc.gnu.org/git/gcc.git
				
				
				
			
		
			
				
	
	
		
			55 lines
		
	
	
		
			933 B
		
	
	
	
		
			C
		
	
	
	
			
		
		
	
	
			55 lines
		
	
	
		
			933 B
		
	
	
	
		
			C
		
	
	
	
| // { dg-do run }
 | |
| 
 | |
| extern "C" void abort (void);
 | |
| 
 | |
| template <typename I, typename F>
 | |
| void
 | |
| foo ()
 | |
| {
 | |
|   I j = -10000;
 | |
|   F f = 1024.0;
 | |
|   int i;
 | |
|   #pragma omp parallel for reduction (min:f) reduction (max:j)
 | |
|     for (i = 0; i < 4; i++)
 | |
|       switch (i)
 | |
| 	{
 | |
| 	case 0:
 | |
| 	  if (j < -16) j = -16; break;
 | |
| 	case 1:
 | |
| 	  if (f > -2.0) f = -2.0; break;
 | |
| 	case 2:
 | |
| 	  if (j < 8) j = 8; if (f > 9.0) f = 9.0; break;
 | |
| 	case 3:
 | |
| 	  break;
 | |
| 	}
 | |
|   if (j != 8 || f != -2.0)
 | |
|     abort ();
 | |
| }
 | |
| 
 | |
| int
 | |
| main ()
 | |
| {
 | |
|   int j = -10000;
 | |
|   float f = 1024.0;
 | |
|   int i;
 | |
|   #pragma omp parallel for reduction (min:f) reduction (max:j)
 | |
|     for (i = 0; i < 4; i++)
 | |
|       switch (i)
 | |
| 	{
 | |
| 	case 0:
 | |
| 	  if (j < -16) j = -16; break;
 | |
| 	case 1:
 | |
| 	  if (f > -2.0) f = -2.0; break;
 | |
| 	case 2:
 | |
| 	  if (j < 8) j = 8; if (f > 9.0) f = 9.0; break;
 | |
| 	case 3:
 | |
| 	  break;
 | |
| 	}
 | |
|   if (j != 8 || f != -2.0)
 | |
|     abort ();
 | |
|   foo <int, float> ();
 | |
|   foo <long, double> ();
 | |
|   foo <long long, long double> ();
 | |
|   return 0;
 | |
| }
 |