https://gcc.gnu.org/bugzilla/show_bug.cgi?id=98393
--- Comment #10 from David Binderman <dcb314 at hotmail dot com> --- Reduced test case: typedef struct { short a; struct { unsigned short b; unsigned short c } d[] } e; enum { f, g, h, i }; e j; char k, l; e *m; void n(void) { int o; char *q, *r = 0, *s, *t, *p = &k; for (; *p; ++p) switch (o) { case f: o = s = p; case g: switch (*p) { case '@': t = p; o = h; } break; case h: q = p; case i: if (p == '#') r = p; } j.d[0].b = q - &k; j.d[0].c = r - q; if (s) { j.d[0].b = s - &k; j.d[0].c = t - s; } if (m) j.d[0].b = j.d[0].c = l; }