| // { 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; |
| } |