https://gcc.gnu.org/bugzilla/show_bug.cgi?id=69176
--- Comment #19 from Matthias Klose <doko at gcc dot gnu.org> --- here is a test case from an ICE I saw when backporting the patch to the gcc-5 Linaro branch. Fails with -O2, works with -O1 typedef int Nlm_Int4, ValNodePtr; Nlm_Int4 b, e; char c, d; void fn1(); typedef struct { double patternProbability; } patternSearchItems; char fn2(); void fn3(); patternSearchItems a; void fn4() { Nlm_Int4 f[20000]; char g[1]; a = *(patternSearchItems *)fn3; while (fn2(c, d & e, b)) if (a.patternProbability) { fn1(g); fn1(f); } }