https://gcc.gnu.org/bugzilla/show_bug.cgi?id=67077
Bug ID: 67077 Summary: [6 Regression] Incorrect "array subscript is above array bounds" warning with -O2 Product: gcc Version: 6.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: tree-optimization Assignee: unassigned at gcc dot gnu.org Reporter: vincent-gcc at vinc17 dot net Target Milestone: --- With Debian's gcc-snapshot 20150722-1 on the following program, I get an incorrect warning "array subscript is above array bounds". unsigned char buffer[8]; unsigned long foo (void) { unsigned long i; i = buffer[0]; if (i >= 8) return i - 7; i++; while (i > 8) { if (buffer[i-1] != 0) return 0; i--; } return 1; } zira:~> gcc-snapshot -Wall -O2 -c tst.c tst.c: In function 'foo': tst.c:11:17: warning: array subscript is above array bounds [-Warray-bounds] if (buffer[i-1] != 0) ^ I don't get this warning if I use -O1 or gcc-snapshot 20150701-1 (thus this problem is very recent) or GCC 5.1.1 (gcc-5 Debian package). Notes: * There are other bugs concerning this warning, but they are older, while here this is a recent regression. * The above code has been obtained by simplifying MPFR's mpfr_fpif_read_precision_from_file function in fpif.c (trunk).