https://gcc.gnu.org/bugzilla/show_bug.cgi?id=62254
--- Comment #5 from ktkachov at gcc dot gnu.org --- More reduced testcase: typedef struct { char bits; short val; } code; union uu { short us; char b[2]; }; int a, b, c, f, g, h; code *d; code e; int fn1 () { char i; do if (e.bits) { dodist: f = c; if (e.bits & 6) { ++i; if (g) do { union uu j; j.b[1] = a; h = j.us; } while (fn1); } else { e = d[b]; goto dodist; } } while (i); }