http://gcc.gnu.org/bugzilla/show_bug.cgi?id=56844
Bug #: 56844 Summary: Loop condition wrongly optimized from < to != Classification: Unclassified Product: gcc Version: 4.8.1 Status: UNCONFIRMED Severity: normal Priority: P3 Component: regression AssignedTo: unassig...@gcc.gnu.org ReportedBy: holger.h...@sap.com Following code is optimized wrong with gcc-4.8 -O2. It works correct with gcc-4.8 -O1 and gcc-4.7 -O2. Somehow the 'i < 16' condition of the second loop is optimized to 'i != 16' (runs second loop until segfault / stack overflow). [gcc-4_8-branch revision 197479, x86_64] int printf (const char *format, ...); char* strncpy (char * dest, const char * src, unsigned long n); int main() { int i; char str[16]; strncpy( str, "abcdefghijklmnop", 16 ); for( i = 0; ( str[i] != '\0' ) && ( i < 16 ); i++ ); for( ; i < 16; i++ ) str[i] = ' '; printf ("str = \"%s\"\n", str); return 0; }