1// { dg-do run } 2 3extern "C" void abort (void); 4 5template <typename I, typename F> 6void 7foo () 8{ 9 I j = -10000; 10 F f = 1024.0; 11 int i; 12 #pragma omp parallel for reduction (min:f) reduction (max:j) 13 for (i = 0; i < 4; i++) 14 switch (i) 15 { 16 case 0: 17 if (j < -16) j = -16; break; 18 case 1: 19 if (f > -2.0) f = -2.0; break; 20 case 2: 21 if (j < 8) j = 8; if (f > 9.0) f = 9.0; break; 22 case 3: 23 break; 24 } 25 if (j != 8 || f != -2.0) 26 abort (); 27} 28 29int 30main () 31{ 32 int j = -10000; 33 float f = 1024.0; 34 int i; 35 #pragma omp parallel for reduction (min:f) reduction (max:j) 36 for (i = 0; i < 4; i++) 37 switch (i) 38 { 39 case 0: 40 if (j < -16) j = -16; break; 41 case 1: 42 if (f > -2.0) f = -2.0; break; 43 case 2: 44 if (j < 8) j = 8; if (f > 9.0) f = 9.0; break; 45 case 3: 46 break; 47 } 48 if (j != 8 || f != -2.0) 49 abort (); 50 foo <int, float> (); 51 foo <long, double> (); 52 foo <long long, long double> (); 53 return 0; 54} 55