reduction-4.C 933 B

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