/* { 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; | |
} |