46 lines
815 B
C
46 lines
815 B
C
/* PR debug/45259 */
|
|
/* { dg-do compile } */
|
|
/* { dg-options "-g -O2 -w -fpic" { target fpic } } */
|
|
/* { dg-options "-g -O2 -w" { target { ! fpic } } } */
|
|
/* { dg-require-effective-target indirect_jumps } */
|
|
/* { dg-require-effective-target label_values } */
|
|
|
|
struct S { void (*bar) (long); };
|
|
struct T { struct S *t; };
|
|
int w;
|
|
extern int baz (int);
|
|
|
|
void
|
|
foo (int x, int u, char *z)
|
|
{
|
|
struct T *v;
|
|
static void *y[256] = { &&l1, &&l2 };
|
|
for (;;)
|
|
switch (x)
|
|
{
|
|
l2:
|
|
x = 9;
|
|
case 9:
|
|
goto *y[*z++];
|
|
case 10:
|
|
case 27:
|
|
case 54:
|
|
case 99:
|
|
case 100:
|
|
case 120:
|
|
case 122:
|
|
case 131:
|
|
case 132:
|
|
case 134:
|
|
case 141:
|
|
case 142:
|
|
v->t->bar (u);
|
|
v->t->bar (u);
|
|
case 143:
|
|
continue;
|
|
l1:
|
|
default:
|
|
baz (w);
|
|
}
|
|
}
|