4 __attribute__((noinline, noclone)) void
5 foo (int (*&x)[3][N], int *y, long (&w)[1][N])
7 unsigned long long a[9] = {};
9 #pragma omp parallel for reduction(+:x[0:N][:][0:N], z[:4]) \
10 reduction(*:y[:3]) reduction(|:a[:4]) \
11 reduction(&:w[0:][:N]) reduction(max:b)
12 for (int 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 (int i = 0; i < 9; i++)
38 if (a[i] != (i < 4 ? 0x55555555ULL : 0))
40 if (b[0] != 78 || b[1] != 12 || b[N] != 22 || b[3] != 84 || b[4] != 127)
45 int (*p3)[3][2] = &a3[1];
46 int y3[5] = { 0, 1, 1, 1, 0 };
47 long w3[1][2] = { ~0L, ~0L };
58 unsigned long long a[9];
59 S() : x(p3), y(y3+1), w(w3), z(), a(), b(bb) {}
60 __attribute__((noinline, noclone)) void foo ();
67 #pragma omp parallel for reduction(+:x[0:N][:][0:N], z[:4]) \
68 reduction(*:y[:3]) reduction(|:a[:4]) \
69 reduction(&:w[0:][:N]) reduction(max:b)
70 for (int i = 0; i < 128; i++)
72 x[i / 64][i % 3][(i / 4) & 1] += i;
82 a[i / 32] |= 1ULL << (i & 30);
83 w[0][i & 1] &= ~(1L << (i / 17 * 3));
101 static int a2[4][3][2] = {{{ 0, 0 }, { 0, 0 }, { 0, 0 }},
102 {{ 312, 381 }, { 295, 356 }, { 337, 335 }},
103 {{ 1041, 975 }, { 1016, 1085 }, { 935, 1060 }},
104 {{ 0, 0 }, { 0, 0 }, { 0, 0 }}};
105 int (*p)[3][2] = &a[1];
106 int y[5] = { 0, 1, 1, 1, 0 };
107 int y2[5] = { 0, 6561, 2401, 289, 0 };
108 char z2[10] = { 48, 49, 50, 51, 0, 0, 0, 0, 0, 0 };
109 long w[1][2] = { ~0L, ~0L };
110 foo<2> (p, y + 1, w);
111 if (__builtin_memcmp (a, a2, sizeof (a))
112 || __builtin_memcmp (y, y2, sizeof (y))
113 || __builtin_memcmp (z, z2, sizeof (z))
114 || w[0][0] != ~0x249249L
115 || w[0][1] != ~0x249249L)
119 for (int i = 0; i < 9; i++)
120 if (s.a[i] != (i < 4 ? 0x55555555ULL : 0))
122 if (__builtin_memcmp (a3, a2, sizeof (a3))
123 || __builtin_memcmp (y3, y2, sizeof (y3))
124 || __builtin_memcmp (s.z, z2, sizeof (s.z))
125 || w3[0][0] != ~0x249249L
126 || w3[0][1] != ~0x249249L)
128 if (bb[0] != 78 || bb[1] != 12 || bb[2] != 22 || bb[3] != 84 || bb[4] != 127)