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