dwarf2out: Fix ICE on large _BitInt in loc_list_from_tree_1 [PR113637]
[official-gcc.git] / libgomp / testsuite / libgomp.c++ / udr-20.C
blob83388758edd9c5fe1bf667f06aab371a5f664eed
1 // PR c++/60228
2 // { dg-additional-options "-std=c++11" }
4 extern "C" void abort ();
6 struct A
8   typedef int T;
9   #pragma omp declare reduction (x : T : omp_out += omp_in + [](){ return 0; }()) initializer (omp_priv = [](){ return 0; }())
10   static void foo ();
13 template <typename T>
14 struct B
16   #pragma omp declare reduction (x : T : omp_out += omp_in + [](){ return T (0); }()) initializer (omp_priv = [](){ return T (0); }())
17   static void foo ();
20 void
21 A::foo ()
23   int r = 0, s = 0;
24   #pragma omp parallel for reduction (x : r, s)
25   for (int i = 0; i < 64; i++)
26     {
27       r++;
28       s += i;
29     }
30   if (r != 64 || s != (64 * 63) / 2)
31     abort ();
34 template <typename T>
35 void
36 B<T>::foo ()
38   T r = 0, s = 0;
39   #pragma omp parallel for reduction (x : r, s)
40   for (int i = 0; i < 64; i++)
41     {
42       r++;
43       s += i;
44     }
45   if (r != 64 || s != (64 * 63) / 2)
46     abort ();
49 int
50 main ()
52   A::foo ();
53   B<long>::foo ();