| /* PR middle-end/36506 */ |
| |
| extern void abort (void); |
| |
| int |
| main (void) |
| { |
| int sum = 0, prod = 1; |
| #pragma omp parallel |
| #pragma omp sections reduction (+:sum) |
| { |
| #pragma omp section |
| sum += 2; |
| #pragma omp section |
| sum += 2; |
| #pragma omp section |
| sum += 2; |
| } |
| if (sum != 6) |
| abort (); |
| sum = 0; |
| #pragma omp parallel sections reduction (+:sum) |
| { |
| #pragma omp section |
| sum += 2; |
| #pragma omp section |
| sum += 2; |
| #pragma omp section |
| sum += 2; |
| } |
| if (sum != 6) |
| abort (); |
| sum = 0; |
| #pragma omp parallel |
| #pragma omp sections reduction (+:sum) reduction (*:prod) |
| { |
| #pragma omp section |
| { |
| sum += 2; |
| prod *= 2; |
| } |
| #pragma omp section |
| { |
| sum += 2; |
| prod *= 2; |
| } |
| #pragma omp section |
| { |
| sum += 2; |
| prod *= 2; |
| } |
| } |
| if (sum != 6 || prod != 8) |
| abort (); |
| sum = 0; |
| prod = 1; |
| #pragma omp parallel sections reduction (+:sum) reduction (*:prod) |
| { |
| #pragma omp section |
| { |
| sum += 2; |
| prod *= 2; |
| } |
| #pragma omp section |
| { |
| sum += 2; |
| prod *= 2; |
| } |
| #pragma omp section |
| { |
| sum += 2; |
| prod *= 2; |
| } |
| } |
| if (sum != 6 || prod != 8) |
| abort (); |
| return 0; |
| } |