reduction-5.c 1.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778
  1. /* PR middle-end/36506 */
  2. extern void abort (void);
  3. int
  4. main (void)
  5. {
  6. int sum = 0, prod = 1;
  7. #pragma omp parallel
  8. #pragma omp sections reduction (+:sum)
  9. {
  10. #pragma omp section
  11. sum += 2;
  12. #pragma omp section
  13. sum += 2;
  14. #pragma omp section
  15. sum += 2;
  16. }
  17. if (sum != 6)
  18. abort ();
  19. sum = 0;
  20. #pragma omp parallel sections reduction (+:sum)
  21. {
  22. #pragma omp section
  23. sum += 2;
  24. #pragma omp section
  25. sum += 2;
  26. #pragma omp section
  27. sum += 2;
  28. }
  29. if (sum != 6)
  30. abort ();
  31. sum = 0;
  32. #pragma omp parallel
  33. #pragma omp sections reduction (+:sum) reduction (*:prod)
  34. {
  35. #pragma omp section
  36. {
  37. sum += 2;
  38. prod *= 2;
  39. }
  40. #pragma omp section
  41. {
  42. sum += 2;
  43. prod *= 2;
  44. }
  45. #pragma omp section
  46. {
  47. sum += 2;
  48. prod *= 2;
  49. }
  50. }
  51. if (sum != 6 || prod != 8)
  52. abort ();
  53. sum = 0;
  54. prod = 1;
  55. #pragma omp parallel sections reduction (+:sum) reduction (*:prod)
  56. {
  57. #pragma omp section
  58. {
  59. sum += 2;
  60. prod *= 2;
  61. }
  62. #pragma omp section
  63. {
  64. sum += 2;
  65. prod *= 2;
  66. }
  67. #pragma omp section
  68. {
  69. sum += 2;
  70. prod *= 2;
  71. }
  72. }
  73. if (sum != 6 || prod != 8)
  74. abort ();
  75. return 0;
  76. }