| /* PR tree-optimization/94166 */ |
| /* { dg-do compile } */ |
| /* { dg-options "-O2 -fcompare-debug" } */ |
| |
| typedef int __m128i __attribute__((__may_alias__, __vector_size__(4 * sizeof (int)))); |
| unsigned int b[512]; |
| |
| void |
| foo (unsigned int *x, __m128i *y) |
| { |
| #define A(n) __m128i v##n = y[n]; |
| #define B(n) A(n##0) A(n##1) A(n##2) A(n##3) A(n##4) A(n##5) A(n##6) A(n##7) \ |
| A(n##8) A(n##9) A(n##a) A(n##b) A(n##c) A(n##d) A(n##e) A(n##f) |
| #define C(n) B(n##0) B(n##1) B(n##2) B(n##3) B(n##4) B(n##5) B(n##6) B(n##7) |
| C(0x) |
| #undef A |
| #define A(n) *(__m128i *) &b[4 * n] = v##n; |
| C(0x) |
| #undef A |
| #define A(n) + b[4 * n] + b[4 * n + 1] + b[4 * n + 2] + b[4 * n + 3] |
| *x = *x |
| C(0x) |
| ; |
| } |