1/* PR middle-end/36506 */
2
3extern void abort (void);
4
5int
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