/* { dg-do link } */ /* { dg-options "-O2" } */ struct A0 { int x; }; struct A1 { int x; int y[1]; }; struct A2 { int x; int y[2]; }; struct A3 { int x; int y[3]; }; struct A4 { int x; int y[4]; }; void *s; int u; int main (void) { int x; void *t = s; switch (u) { case 0: x = ((struct A0 *) t)->x; break; case 1: x = ((struct A1 *) t)->x; break; case 2: x = ((struct A2 *) t)->x; break; case 3: x = ((struct A3 *) t)->x; break; case 4: x = ((struct A4 *) t)->x; break; default: x = 0; break; } return x; }