// RUN: %libomptarget-compilexx-run-and-check-aarch64-unknown-linux-gnu
// RUN: %libomptarget-compilexx-run-and-check-powerpc64-ibm-linux-gnu
// RUN: %libomptarget-compilexx-run-and-check-powerpc64le-ibm-linux-gnu
// RUN: %libomptarget-compilexx-run-and-check-x86_64-pc-linux-gnu
// RUN: %libomptarget-compilexx-run-and-check-nvptx64-nvidia-cuda

#include <cstdio>
#include <cstdlib>

typedef struct {
  int a;
  double *b;
} C1;
#pragma omp declare mapper(C1 s) map(to : s.a) map(from : s.b [0:2])

typedef struct {
  int a;
  double *b;
  C1 c;
} C;
#pragma omp declare mapper(C s) map(to : s.a, s.c) map(from : s.b [0:2])

typedef struct {
  int e;
  C f;
  int h;
} D;

int main() {
  constexpr int N = 10;
  D sa[10];
  sa[1].e = 111;
  sa[1].f.a = 222;
  sa[1].f.c.a = 777;
  double x[2];
  double x1[2];
  x[1] = 20;
  sa[1].f.b = &x[0];
  sa[1].f.c.b = &x1[0];
  sa[1].h = N;

  printf("%d %d %d %4.5f %d\n", sa[1].e, sa[1].f.a, sa[1].f.c.a, sa[1].f.b[1],
         sa[1].f.b == &x[0] ? 1 : 0);
  // CHECK: 111 222 777 20.00000 1

  __intptr_t p = reinterpret_cast<__intptr_t>(&x[0]);
#pragma omp target map(tofrom : sa[1]) firstprivate(p)
  {
    printf("%d %d %d\n", sa[1].f.a, sa[1].f.c.a,
           sa[1].f.b == reinterpret_cast<void *>(p) ? 1 : 0);
    // CHECK: 222 777 0
    sa[1].e = 333;
    sa[1].f.a = 444;
    sa[1].f.c.a = 555;
    sa[1].f.b[1] = 40;
  }
  printf("%d %d %d %4.5f %d\n", sa[1].e, sa[1].f.a, sa[1].f.c.a, sa[1].f.b[1],
         sa[1].f.b == &x[0] ? 1 : 0);
  // CHECK: 333 222 777 40.00000 1
}
