https://gcc.gnu.org/bugzilla/show_bug.cgi?id=79950
Bug ID: 79950 Summary: G++ cannot detect simple off by one error in STL classes Product: gcc Version: 7.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: c++ Assignee: unassigned at gcc dot gnu.org Reporter: dcb314 at hotmail dot com Target Milestone: --- Given the following C++ source code # include <vector> using namespace std; extern void g( int); void f1( const vector < int > & v) { for (size_t i = 0; i <= v.size(); ++i) { g( v[i]); } } int a[ 10]; void f2() { for (int i = 0; i <= 10; ++i) { g( a[i]); } } then current trunk gcc can detect a problem in f2, but not f1. $ ~/gcc/results/bin/g++ -g -O2 -D_FORTIFY_SOURCE=2 -Wall -Wextra -c mar7a.cc mar7a.cc: In function ‘void f2()’: mar7a.cc:22:4: warning: iteration 10 invokes undefined behavior [-Waggressive-loop-optimizations] g( a[i]); ~^~~~~~~ mar7a.cc:20:20: note: within this loop for (int i = 0; i <= 10; ++i) ~~^~~~~ $