/* { dg-do run } */ #include int i; int main(void) { int j, v; i = -1; j = -2; v = 0; #pragma acc parallel /* copyout */ present_or_copyout (v) copyin (i, j) { if (i != -1 || j != -2) abort (); i = 2; j = 1; if (i != 2 || j != 1) abort (); v = 1; } #if ACC_MEM_SHARED if (v != 1 || i != 2 || j != 1) abort (); #else if (v != 1 || i != -1 || j != -2) abort (); #endif i = -1; j = -2; v = 0; #pragma acc parallel /* copyout */ present_or_copyout (v) copyout (i, j) { i = 2; j = 1; if (i != 2 || j != 1) abort (); v = 1; } if (v != 1 || i != 2 || j != 1) abort (); i = -1; j = -2; v = 0; #pragma acc parallel /* copyout */ present_or_copyout (v) copy (i, j) { if (i != -1 || j != -2) abort (); i = 2; j = 1; if (i != 2 || j != 1) abort (); v = 1; } if (v != 1 || i != 2 || j != 1) abort (); i = -1; j = -2; v = 0; #pragma acc parallel /* copyout */ present_or_copyout (v) create (i, j) { i = 2; j = 1; if (i != 2 || j != 1) abort (); v = 1; } #if ACC_MEM_SHARED if (v != 1 || i != 2 || j != 1) abort (); #else if (v != 1 || i != -1 || j != -2) abort (); #endif i = -1; j = -2; v = 0; #pragma acc parallel /* copyout */ present_or_copyout (v) present_or_copyin (i, j) { if (i != -1 || j != -2) abort (); i = 2; j = 1; if (i != 2 || j != 1) abort (); v = 1; } if (v != 1) abort (); #if ACC_MEM_SHARED if (v != 1 || i != 2 || j != 1) abort (); #else if (v != 1 || i != -1 || j != -2) abort (); #endif i = -1; j = -2; v = 0; #pragma acc parallel /* copyout */ present_or_copyout (v) present_or_copyout (i, j) { i = 2; j = 1; if (i != 2 || j != 1) abort (); v = 1; } if (v != 1 || i != 2 || j != 1) abort (); i = -1; j = -2; v = 0; #pragma acc parallel /* copyout */ present_or_copyout (v) present_or_copy (i, j) { if (i != -1 || j != -2) abort (); i = 2; j = 1; if (i != 2 || j != 1) abort (); v = 1; } if (v != 1 || i != 2 || j != 1) abort (); i = -1; j = -2; v = 0; #pragma acc parallel /* copyout */ present_or_copyout (v) present_or_create (i, j) { i = 2; j = 1; if (i != 2 || j != 1) abort (); v = 1; } if (v != 1) abort (); #if ACC_MEM_SHARED if (v != 1 || i != 2 || j != 1) abort (); #else if (v != 1 || i != -1 || j != -2) abort (); #endif i = -1; j = -2; v = 0; #pragma acc data copyin (i, j) { #pragma acc parallel /* copyout */ present_or_copyout (v) present (i, j) { if (i != -1 || j != -2) abort (); i = 2; j = 1; if (i != 2 || j != 1) abort (); v = 1; } } #if ACC_MEM_SHARED if (v != 1 || i != 2 || j != 1) abort (); #else if (v != 1 || i != -1 || j != -2) abort (); #endif i = -1; j = -2; v = 0; #pragma acc data copyin(i, j) { #pragma acc parallel /* copyout */ present_or_copyout (v) { if (i != -1 || j != -2) abort (); i = 2; j = 1; if (i != 2 || j != 1) abort (); v = 1; } } #if ACC_MEM_SHARED if (v != 1 || i != 2 || j != 1) abort (); #else if (v != 1 || i != -1 || j != -2) abort (); #endif return 0; }