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

// Clang 6.0 doesn't use the new map interface, undefined behavior when
// the compiler emits "old" interface code for structures.
// UNSUPPORTED: clang-6

#include <stdio.h>
#include <stdlib.h>

typedef struct {
  int *ptr1;
  int *ptr2;
} StructWithPtrs;

int main(int argc, char *argv[]) {
  StructWithPtrs s, s2;
  s.ptr1 = malloc(sizeof(int));
  s.ptr2 = malloc(2 * sizeof(int));
  s2.ptr1 = malloc(sizeof(int));
  s2.ptr2 = malloc(2 * sizeof(int));

#pragma omp target enter data map(to: s2.ptr2[0:1])
#pragma omp target map(s.ptr1[0:1], s.ptr2[0:2])
  {
    s.ptr1[0] = 1;
    s.ptr2[0] = 2;
    s.ptr2[1] = 3;
  }
#pragma omp target exit data map(from: s2.ptr1[0:1], s2.ptr2[0:1])

  // CHECK: s.ptr1[0] = 1
  // CHECK: s.ptr2[0] = 2
  // CHECK: s.ptr2[1] = 3
  printf("s.ptr1[0] = %d\n", s.ptr1[0]);
  printf("s.ptr2[0] = %d\n", s.ptr2[0]);
  printf("s.ptr2[1] = %d\n", s.ptr2[1]);

  free(s.ptr1);
  free(s.ptr2);
  free(s2.ptr1);
  free(s2.ptr2);

  return 0;
}
