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