https://gcc.gnu.org/bugzilla/show_bug.cgi?id=88788
--- Comment #12 from prathamesh3492 at gcc dot gnu.org --- (In reply to Jakub Jelinek from comment #11) > Look e.g. at -O2: > void bar (int); > > void > foo (int x) > { > int i = 0; > if (x == 8) > { > x = 16; > goto lab; > } > for (; i < 100; i++) > { > lab: > bar (x); > } > } > > but pretty much any time you have a loop where some var doesn't really > change, but there is some other edge to the loop header with a different > value for that var. Ah indeed. Thanks for the explanation!