| /* PR rtl-optimization/69891 */ |
| /* { dg-do run } */ |
| /* { dg-options "-O -fno-tree-fre -mstringop-strategy=libcall -Wno-psabi" } */ |
| /* { dg-additional-options "-mno-sse" { target ia32 } } */ |
| |
| typedef unsigned short A; |
| typedef unsigned short B __attribute__ ((vector_size (32))); |
| typedef unsigned int C; |
| typedef unsigned int D __attribute__ ((vector_size (32))); |
| typedef unsigned long long E; |
| typedef unsigned long long F __attribute__ ((vector_size (32))); |
| |
| __attribute__((noinline, noclone)) unsigned |
| foo(D a, B b, D c, F d) |
| { |
| b /= (B) {1, -c[0]} | 1; |
| c[0] |= 7; |
| a %= c | 1; |
| c ^= c; |
| return a[0] + b[15] + c[0] + d[3]; |
| } |
| |
| int |
| main () |
| { |
| unsigned x = foo ((D) {}, (B) {}, (D) {}, (F) {}); |
| if (x != 0) |
| __builtin_abort (); |
| return 0; |
| } |