// { dg-do compile }
// { dg-options "-fopenmp -fdump-tree-gimple" }
struct S
{
  int a, b;
  void bar (int);
};
void
S::bar (int x)
{
  #pragma omp target map (alloc: a, b)
    ;
  #pragma omp target enter data map (alloc: a, b)
}
template <int N>
struct T
{
  int a, b;
  void bar (int);
};
template <int N>
void
T<N>::bar (int x)
{
  #pragma omp target map (alloc: a, b)
    ;
  #pragma omp target enter data map (alloc: a, b)
}
template struct T<0>;
/* { dg-final { scan-tree-dump-times "map\\(struct:\\*\\(struct S \\*\\) this \\\[len: 2\\\]\\) map\\(alloc:this->a \\\[len: \[0-9\]+\\\]\\) map\\(alloc:this->b \\\[len: \[0-9\]+\\\]\\)" 2 "gimple" } } */
/* { dg-final { scan-tree-dump-times "map\\(struct:\\*\\(struct T \\*\\) this \\\[len: 2\\\]\\) map\\(alloc:this->a \\\[len: \[0-9\]+\\\]\\) map\\(alloc:this->b \\\[len: \[0-9\]+\\\]\\)" 2 "gimple" } } */