PR target/81988
[official-gcc.git] / libgomp / testsuite / libgomp.c++ / reduction-4.C
blobe7ef8a13c2acb843a14a77fe9ff3b95313f60371
1 // { dg-do run }
3 extern "C" void abort (void);
5 template <typename I, typename F>
6 void
7 foo ()
9   I j = -10000;
10   F f = 1024.0;
11   int i;
12   #pragma omp parallel for reduction (min:f) reduction (max:j)
13     for (i = 0; i < 4; i++)
14       switch (i)
15         {
16         case 0:
17           if (j < -16) j = -16; break;
18         case 1:
19           if (f > -2.0) f = -2.0; break;
20         case 2:
21           if (j < 8) j = 8; if (f > 9.0) f = 9.0; break;
22         case 3:
23           break;
24         }
25   if (j != 8 || f != -2.0)
26     abort ();
29 int
30 main ()
32   int j = -10000;
33   float f = 1024.0;
34   int i;
35   #pragma omp parallel for reduction (min:f) reduction (max:j)
36     for (i = 0; i < 4; i++)
37       switch (i)
38         {
39         case 0:
40           if (j < -16) j = -16; break;
41         case 1:
42           if (f > -2.0) f = -2.0; break;
43         case 2:
44           if (j < 8) j = 8; if (f > 9.0) f = 9.0; break;
45         case 3:
46           break;
47         }
48   if (j != 8 || f != -2.0)
49     abort ();
50   foo <int, float> ();
51   foo <long, double> ();
52   foo <long long, long double> ();
53   return 0;