/* 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])) (); }