https://gcc.gnu.org/bugzilla/show_bug.cgi?id=62175
--- Comment #4 from Marc Glisse <glisse at gcc dot gnu.org> --- struct B { B(int = 0); }; int c; int *d; struct G { G(); int numProcs_; }; int fn1(); B fn2() { if (c) return 0; return B(); } long &fn3(long &p1, long &p2) { if (p2 < p1) return p2; return p1; } void fn4(long p1) { long a = fn1(); fn2(); int b = fn3(p1, a); for (int i; i < b; ++i) d[0] = 0; for (; a < p1; ++a) d[a] = 0; } G::G() { fn4(numProcs_ + 1); } (compiled with -O3 -ftrapv)