https://gcc.gnu.org/bugzilla/show_bug.cgi?id=65178
--- Comment #9 from Leon Winter <winter-...@bfw-online.de> --- > If you declare it outside the loop body, gcc generates exactly the same code > for a 'for' and a 'do-while'. You are right. When I did the testing, I mistakenly left out "-O1" or such so I did not see the warning :/ Probably there is no way to hint to the compiler a code path is always visited (similar to "likely()"/"unlikely()") so we will stick with gcc-4.9.x for the time being.