39 lines
728 B
C
39 lines
728 B
C
/* PR debug/56510 */
|
|
/* { dg-do compile } */
|
|
/* { dg-options "-O2 -g" } */
|
|
|
|
__extension__ typedef __INTPTR_TYPE__ intptr_t;
|
|
struct S { unsigned long s1; void **s2[0]; };
|
|
void **a, **b, **c, **d, **e, **f;
|
|
|
|
static void **
|
|
baz (intptr_t x, intptr_t y)
|
|
{
|
|
void **s = f;
|
|
*f = (void **) (y << 8 | (x & 0xff));
|
|
f += y + 1;
|
|
return s;
|
|
}
|
|
|
|
void bar (void);
|
|
void
|
|
foo (void)
|
|
{
|
|
void **g = b[4];
|
|
a = b[2];
|
|
b = b[1];
|
|
g[2] = e;
|
|
void **h
|
|
= ((void **************************)
|
|
a)[1][1][1][1][1][1][1][1][1][1][1][1][1][1][1][1][1][1][1][1][1][1][1][1][66];
|
|
void **i = ((struct S *) h)->s2[4];
|
|
d = baz (4, 3);
|
|
d[1] = b;
|
|
d[2] = a;
|
|
d[3] = bar;
|
|
b = d;
|
|
g[1] = i[2];
|
|
a = g;
|
|
((void (*) (void)) (i[1])) ();
|
|
}
|