/* { dg-do run } */ #include #define DO_PRAGMA(x) _Pragma (#x) #define test(idx,type,ngangs) \ void \ test_##idx () \ { \ int b[100]; \ \ for (unsigned int i = 0; i < 100; i++) \ b[i] = 0; \ \ DO_PRAGMA(acc parallel num_gangs (ngangs) copy (b)) \ { \ _Pragma("acc loop gang") \ for (type j = 0; j < 5; j++) \ { \ _Pragma("acc loop vector") \ for (unsigned int i = 0; i < 20; i++) \ b[j * 20 + i] = -2; \ } \ } \ \ for (unsigned int i = 0; i < 100; i++) \ assert (b[i] == -2); \ } test (0, signed char, 256) test (1, unsigned char, 256) test (2, signed short, 65535) test (3, unsigned short, 65535) int main () { test_0 (); test_1 (); test_2 (); test_3 (); return 0; }