// PR libgomp/69555 // { dg-do run } __attribute__((noinline, noclone)) void f1 (int y) { int a[y - 2]; int (&c)[y - 2] = a; for (int i = 0; i < y - 2; i++) c[i] = i + 4; #pragma omp target firstprivate (c) { for (int i = 0; i < y - 2; i++) { if (c[i] != i + 4) __builtin_abort (); c[i] = i + 9; } asm volatile ("" : : "r" (&c[0]) : "memory"); for (int i = 0; i < y - 2; i++) if (c[i] != i + 9) __builtin_abort (); } for (int i = 0; i < y - 2; i++) if (c[i] != i + 4) __builtin_abort (); } __attribute__((noinline, noclone)) void f2 (int y) { int a[y - 2]; int (&c)[y - 2] = a; for (int i = 0; i < y - 2; i++) c[i] = i + 4; #pragma omp target private (c) { for (int i = 0; i < y - 2; i++) c[i] = i + 9; asm volatile ("" : : "r" (&c[0]) : "memory"); for (int i = 0; i < y - 2; i++) if (c[i] != i + 9) __builtin_abort (); } for (int i = 0; i < y - 2; i++) if (c[i] != i + 4) __builtin_abort (); } int main () { f1 (6); f2 (6); return 0; }