https://gcc.gnu.org/bugzilla/show_bug.cgi?id=110819
Bug ID: 110819 Summary: Missed optimization: when vector size is 0 but vector::reserve has been called. Product: gcc Version: unknown Status: UNCONFIRMED Severity: normal Priority: P3 Component: c++ Assignee: unassigned at gcc dot gnu.org Reporter: hiraditya at msn dot com Target Milestone: --- #include<vector> void f(int); void use_idx_const_size_reserve() { std::vector<int> v; v.reserve(100000); auto s = v.size(); for (std::vector<int>::size_type i = 0; i < s; i++) f(v[i]); } $ g++ -O3 use_idx_const_size_reserve(): sub rsp, 8 mov edi, 400000 call operator new(unsigned long) mov esi, 400000 add rsp, 8 mov rdi, rax jmp operator delete(void*, unsigned long) $ clang++ -O3 -stdlib=libc++ use_idx_const_size_reserve(): # @use_idx_const_size_reserve() ret