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

Reply via email to