blob: f0be59aa60084477b81b93defaed3ddb5c27f832 [file] [log] [blame]
// { dg-require-effective-target vect_simd_clones }
// { dg-additional-options "-fopenmp-simd -fno-inline" }
// { dg-additional-options "-mavx" { target avx_runtime } }
#include "../../gcc.dg/vect/tree-vect.h"
struct S
{
int s;
#pragma omp declare simd notinbranch linear(x)
int f (int x);
};
#pragma omp declare simd notinbranch linear(x)
int
S::f (int x)
{
return x;
}
template <int N>
struct T
{
int t;
#pragma omp declare simd notinbranch linear(x)
int f (int x);
};
#pragma omp declare simd notinbranch linear(x)
template <int N>
int
T<N>::f (int x)
{
return x;
}
void
do_main ()
{
int i, r = 0;
S s;
T<0> t;
#pragma omp simd reduction(+:r)
for (i = 0; i < 64; i++)
r += s.f (i) + t.f (i);
if (r != 64 * 63)
abort ();
}
int
main ()
{
check_vect ();
do_main ();
}