| /* PR rtl-optimization/90756 */ |
| /* { dg-do compile } */ |
| /* { dg-options "-O2 -Wno-psabi" } */ |
| /* { dg-additional-options "-mno-sse" { target ia32 } } */ |
| |
| typedef float B __attribute__((vector_size(4 * sizeof (float)))); |
| typedef unsigned long long C __attribute__((vector_size(4 * sizeof (long long)))); |
| typedef short D __attribute__((vector_size(4 * sizeof (short)))); |
| B z; |
| void foo (C); |
| C bar (D); |
| B baz (); |
| D qux (B); |
| |
| void |
| quux (int x) |
| { |
| B n = z, b = z; |
| while (1) |
| switch (x) |
| { |
| case 0: n = baz (); /* FALLTHRU */ |
| case 1: { B o = n; n = b; b = o; } /* FALLTHRU */ |
| case 2: { D u = qux (b); C v = bar (u); foo (v); } |
| } |
| } |