/* { dg-do run } */ /* { dg-options "-O1 -ftree-parallelize-loops=0" } */ /* { dg-additional-options "-flto" { target lto } } */ #include #define N 123456 #pragma omp declare target int X, Y; #pragma omp end declare target void foo () { #pragma omp target map(alloc: X) X = N; } int main () { int res; foo (); #pragma omp target map(alloc: X, Y) map(from: res) { Y = N; res = X + Y; } if (res != N + N) abort (); return 0; }