https://gcc.gnu.org/bugzilla/show_bug.cgi?id=61520
Bug ID: 61520 Summary: False warning: array subscript is below array bounds (-Warray-bounds -O -ftree-vrp -funroll-loops) Product: gcc Version: 4.8.1 Status: UNCONFIRMED Severity: normal Priority: P3 Component: c Assignee: unassigned at gcc dot gnu.org Reporter: svojtovich at gmail dot com gcc emits false warning for the following code: gcc -Warray-bounds -O -ftree-vrp -funroll-loops -c dec.c -o dec.o or gcc -Warray-bounds -O3 -c dec.c -o dec.o static const int powers10[2 + 1]= { 1, 10, 100 }; int remove_leading_zeroes(int decimals, int var) { decimals%= 2; while (var < powers10[decimals--]) /* no-op */; return decimals; } This is simplified code, original code is available here: http://bazaar.launchpad.net/~maria-captains/maria/10.0/view/head:/strings/decimal.c#L251 Note that original code ensures (within the same function) that array subscript won't underrun array bounds. 4.8.2 seem to be also affected, look for compile results for decimal.c: https://buildbot.askmonty.org/buildbot/builders/kvm-deb-trusty-amd64/builds/261/steps/compile/logs/stdio