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