blob: ac4c609c90c2abbf334502533ba88173ff29aab6 [file] [log] [blame]
// PR c++/66571
// { dg-do compile }
// { dg-options "-fopenmp" }
template <typename T>
extern void bar (T, T, T, T);
template <typename T>
void
foo (T a, T b, T c, T d)
{
#pragma omp parallel for simd private (a) firstprivate (b) lastprivate (c) linear (d:2)
for (int i = 0; i < 10; i++)
bar<T> (a, b, c, d), d += 2;
#pragma omp parallel private (c)
#pragma omp single copyprivate (c)
bar<T> (a, b, c, d);
T e = a;
T f = b;
T g = c;
T h = d;
#pragma omp parallel for simd private (e) firstprivate (f) lastprivate (g) linear (h:2)
for (int i = 0; i < 10; i++)
bar<T> (e, f, g, h), h += 2;
#pragma omp parallel private (g)
#pragma omp single copyprivate (g)
bar<T> (e, f, g, h);
}
void
baz ()
{
int a = 0, b = 0, c = 0, d = 0;
foo <int> (a, b, c, d);
foo <int &> (a, b, c, d);
}