1 // RUN: %libomptarget-compilexx-run-and-check-generic
2 
3 #include <stdio.h>
4 #include <stdint.h>
5 
6 // CHECK: before: [[V1:111]] [[V2:222]] [[PX:0x[^ ]+]] [[PY:0x[^ ]+]]
7 // CHECK: lambda: [[V1]] [[V2]] [[PX_TGT:0x[^ ]+]] 0x{{.*}}
8 // CHECK: tgt   : [[V2]] [[PX_TGT]] 1
9 // CHECK: out   : [[V2]] [[V2]] [[PX]] [[PY]]
10 
11 int main() {
12   int x[10];
13   long y[8];
14   x[1] = 111;
15   y[1] = 222;
16 
17   auto lambda = [&x, y]() {
18     printf("lambda: %d %ld %p %p\n", x[1], y[1], &x[0], &y[0]);
19     x[1] = y[1];
20   };
21 
22   printf("before: %d %ld %p %p\n", x[1], y[1], &x[0], &y[0]);
23 
24   intptr_t xp = (intptr_t) &x[0];
25 #pragma omp target firstprivate(xp)
26   {
27     lambda();
28     printf("tgt   : %d %p %d\n", x[1], &x[0], (&x[0] != (int*) xp));
29   }
30   printf("out   : %d %ld %p %p\n", x[1], y[1], &x[0], &y[0]);
31 
32   return 0;
33 }
34 
35