Imported Upstream version 4.8.1
[platform/upstream/gcc48.git] / libgomp / testsuite / libgomp.c / reduction-5.c
1 /* PR middle-end/36506 */
2
3 extern void abort (void);
4
5 int
6 main (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 }