/* { dg-do compile } */ /* { dg-additional-options "-O3" } */ typedef struct { double a, b; } c; typedef struct { c d; long coordinates; } e; int f; c g; e h; void k(int); int n(); void j() { int i; k(i); } void k(int l) { double a; int b; c m[4]; long i; for (; l;) do { g.a = b ?: a; m[3] = g; if (f) m[0] = m[1] = m[3]; i = 0; for (; i < 4; i++) (&h + i)->d = m[i]; } while (n()); }