Files
llvm/offload/test/mapping/lambda_by_value.cpp
Joseph Huber 0fcce4fb7b [OpenMP] Mark problematic tests as XFAIL / UNSUPPORTED (#161267)
Summary:
Several of these tests have been failing for literal years. Ideally we
make efforts to fix this, but keeping these broken has had serious
consequences on our testing infrastructure where failures are the norm
so almost all test failures are disregarded. I made a tracking issue for
the ones that have been disabled.

https://github.com/llvm/llvm-project/issues/161265
2025-09-29 15:17:55 -05:00

51 lines
1.2 KiB
C++

// RUN: %libomptarget-compileopt-generic -fno-exceptions
// RUN: %libomptarget-run-generic 2>&1 | %fcheck-generic
#include <stdint.h>
#include <stdio.h>
// CHECK: before: [[V1:111]] [[V2:222]] [[PX:0x[^ ]+]] [[PY:0x[^ ]+]]
// CHECK: lambda: [[V1]] [[V2]] [[PX_TGT:0x[^ ]+]] 0x{{.*}}
// CHECK: tgt : [[V2]] [[PX_TGT]] 1
// CHECK: out : [[V2]] [[V2]] [[PX]] [[PY]]
#pragma omp begin declare target
int a = -1, *c;
long b = -1;
const long *d;
int e = -1, *f, g = -1;
#pragma omp end declare target
int main() {
int x[10];
long y[8];
x[1] = 111;
y[1] = 222;
auto lambda = [&x, y]() {
a = x[1];
b = y[1];
c = &x[0];
d = &y[0];
printf("lambda: %d %ld %p %p\n", x[1], y[1], &x[0], &y[0]);
x[1] = y[1];
};
printf("before: %d %ld %p %p\n", x[1], y[1], &x[0], &y[0]);
intptr_t xp = (intptr_t)&x[0];
#pragma omp target firstprivate(xp)
{
lambda();
e = x[1];
f = &x[0];
g = (&x[0] != (int *)xp);
printf("tgt : %d %p %d\n", x[1], &x[0], (&x[0] != (int *)xp));
}
#pragma omp target update from(a, b, c, d, e, f, g)
printf("lambda: %d %ld %p %p\n", a, b, c, d);
printf("tgt : %d %p %d\n", e, f, g);
printf("out : %d %ld %p %p\n", x[1], y[1], &x[0], &y[0]);
return 0;
}