3 __attribute__((noinline
, noclone
)) void
4 foo (int (*x
)[3][2], int *y
, long w
[1][2])
6 unsigned long long a
[9] = {};
9 #pragma omp parallel for reduction(+:x[0:2][:][0:2], z[:4]) \
10 reduction(*:y[:3]) reduction(|:a[:4]) \
11 reduction(&:w[0:1][:2]) reduction(max:b)
12 for (i
= 0; i
< 128; i
++)
14 x
[i
/ 64][i
% 3][(i
/ 4) & 1] += i
;
24 a
[i
/ 32] |= 1ULL << (i
& 30);
25 w
[0][i
& 1] &= ~(1L << (i
/ 17 * 3));
37 for (i
= 0; i
< 9; i
++)
38 if (a
[i
] != (i
< 4 ? 0x55555555ULL
: 0))
40 if (b
[0] != 78 || b
[1] != 12 || b
[2] != 22 || b
[3] != 84 || b
[4] != 127)
48 static int a2
[4][3][2] = {{{ 0, 0 }, { 0, 0 }, { 0, 0 }},
49 {{ 312, 381 }, { 295, 356 }, { 337, 335 }},
50 {{ 1041, 975 }, { 1016, 1085 }, { 935, 1060 }},
51 {{ 0, 0 }, { 0, 0 }, { 0, 0 }}};
52 int y
[5] = { 0, 1, 1, 1, 0 };
53 int y2
[5] = { 0, 6561, 2401, 289, 0 };
54 char z2
[10] = { 48, 49, 50, 51, 0, 0, 0, 0, 0, 0 };
55 long w
[1][2] = { ~0L, ~0L };
56 foo (&a
[1], y
+ 1, w
);
57 if (__builtin_memcmp (a
, a2
, sizeof (a
))
58 || __builtin_memcmp (y
, y2
, sizeof (y
))
59 || __builtin_memcmp (z
, z2
, sizeof (z
))
60 || w
[0][0] != ~0x249249L
61 || w
[0][1] != ~0x249249L
)