[PR c++/84702] ICE with default tmpl arg of overload set
[official-gcc.git] / gcc / testsuite / g++.dg / gomp / pr66571-1.C
blob9fa9ab6f0eccc15e9520db749a187b8e6fe19bd9
1 // PR c++/66571
2 // { dg-do compile }
3 // { dg-options "-fopenmp" }
5 template <typename T, typename U>
6 extern void bar (T, T, U);
8 template <typename T, typename U>
9 void
10 foo (T a, T b, U c)
12   #pragma omp parallel for simd shared (a, c) reduction (+:b)
13   for (int i = 0; i < 10; i++)
14     bar<T> (a, b, c);
15   #pragma omp target map(tofrom:a, c[0:5])
16     ;
17   #pragma omp task depend(inout:c[4:2])
18     ;
19   T d = a;
20   T e = b;
21   U f = c;
22   #pragma omp parallel for simd shared (d, f) reduction (+:e)
23   for (int i = 0; i < 10; i++)
24     bar<T> (d, e, f);
25   #pragma omp target map(tofrom:d, f[0:5])
26     ;
27   #pragma omp task depend(inout:f[4:2])
28     ;
31 void
32 baz ()
34   int a = 0, b = 0, cb[10] = {}, *c = cb;
35   foo <int, int *> (a, b, c);
36   foo <int &, int *&> (a, b, c);