1edb8acdcSJoseph Huber // RUN: %libomptarget-compilexx-generic && %libomptarget-run-generic | %fcheck-generic
2edb8acdcSJoseph Huber 
3edb8acdcSJoseph Huber #include <cstdio>
4edb8acdcSJoseph Huber 
foo()5*9d3550c5SJoseph Huber int foo() { return 1; }
6*9d3550c5SJoseph Huber 
7*9d3550c5SJoseph Huber class C {
8*9d3550c5SJoseph Huber public:
C()9*9d3550c5SJoseph Huber   C() : x(foo()) {}
10*9d3550c5SJoseph Huber 
11*9d3550c5SJoseph Huber   int x;
12*9d3550c5SJoseph Huber };
13*9d3550c5SJoseph Huber 
14*9d3550c5SJoseph Huber C c;
15*9d3550c5SJoseph Huber #pragma omp declare target(c)
16edb8acdcSJoseph Huber 
main()17edb8acdcSJoseph Huber int main() {
18*9d3550c5SJoseph Huber   int x = 0;
19*9d3550c5SJoseph Huber #pragma omp target map(from : x)
20*9d3550c5SJoseph Huber   { x = c.x; }
21edb8acdcSJoseph Huber 
22edb8acdcSJoseph Huber   // CHECK: PASS
23*9d3550c5SJoseph Huber   if (x == 1)
24edb8acdcSJoseph Huber     printf("PASS\n");
25edb8acdcSJoseph Huber }
26