// RUN: %libomptarget-compilexx-run-and-check-generic

// https://github.com/llvm/llvm-project/issues/182119
// UNSUPPORTED: intelgpu

#include <stdio.h>

struct View {
  int Data;
};

struct ViewPtr {
  int *Data;
};

template <typename T> struct Foo {
  Foo(T &V) : VRef(V) {}
  T &VRef;
};

int main() {
  View V;
  V.Data = 123456;
  Foo<View> Bar(V);
  ViewPtr V1;
  int Data = 123456;
  V1.Data = &Data;
  Foo<ViewPtr> Baz(V1);
  int D1, D2;

  // CHECK: Host 123456.
  printf("Host %d.\n", Bar.VRef.Data);
#pragma omp target map(Bar.VRef) map(from : D1, D2)
  {
    // CHECK: Device 123456.
    D1 = Bar.VRef.Data;
    printf("Device %d.\n", D1);
    V.Data = 654321;
    // CHECK: Device 654321.
    D2 = Bar.VRef.Data;
    printf("Device %d.\n", D2);
  }
  printf("Device %d.\n", D1);
  printf("Device %d.\n", D2);
  // CHECK: Host 654321 654321.
  printf("Host %d %d.\n", Bar.VRef.Data, V.Data);
  V.Data = 123456;
  // CHECK: Host 123456.
  printf("Host %d.\n", Bar.VRef.Data);
#pragma omp target map(Bar) map(Bar.VRef) map(from : D1, D2)
  {
    // CHECK: Device 123456.
    D1 = Bar.VRef.Data;
    printf("Device %d.\n", D1);
    V.Data = 654321;
    // CHECK: Device 654321.
    D2 = Bar.VRef.Data;
    printf("Device %d.\n", D2);
  }
  printf("Device %d.\n", D1);
  printf("Device %d.\n", D2);
  // CHECK: Host 654321 654321.
  printf("Host %d %d.\n", Bar.VRef.Data, V.Data);
  // CHECK: Host 123456.
  printf("Host %d.\n", *Baz.VRef.Data);
#pragma omp target map(Baz.VRef.Data) map(*Baz.VRef.Data) map(V1.Data[0 : 0])  \
    map(from : D1, D2)
  {
    // CHECK: Device 123456.
    D1 = *Baz.VRef.Data;
    printf("Device %d.\n", D1);
    *V1.Data = 654321;
    // CHECK: Device 654321.
    D2 = *Baz.VRef.Data;
    printf("Device %d.\n", D2);
  }
  printf("Device %d.\n", D1);
  printf("Device %d.\n", D2);
  // CHECK: Host 654321 654321 654321.
  printf("Host %d %d %d.\n", *Baz.VRef.Data, *V1.Data, Data);
  return 0;
}
