// { dg-do compile } // { dg-options "-std=gnu17 -g" } struct A { struct A *a; } foo (); struct B { long b; }; struct C { struct B c; struct A d; } *e; void bar (void) { int f; struct C *g; struct A *h; for (g = 0, g = e ? (void *) e - (char) (__SIZE_TYPE__) &g->d : 0, h = g ? (&g->d)->a : 0; g; g = 0, g = h ? (void *) h - (char) (__SIZE_TYPE__) &g->d : 0, h = h ? h->a : 0) { f = (int) (__SIZE_TYPE__) g; foo (((struct B *) g)->b); } }