https://gcc.gnu.org/bugzilla/show_bug.cgi?id=109442
Bug ID: 109442 Summary: Dead local copy of std::vector not removed from function Product: gcc Version: unknown Status: UNCONFIRMED Severity: normal Priority: P3 Component: tree-optimization Assignee: unassigned at gcc dot gnu.org Reporter: hiraditya at msn dot com Target Milestone: --- T vat1(std::vector<T> v1) { auto v = v1; return 10; } g++ -O3 -std=c++20 -fno-exceptions vat1(std::vector<int, std::allocator<int> >): mov rax, QWORD PTR [rdi+8] sub rax, QWORD PTR [rdi] je .L11 push rbp mov rbp, rax movabs rax, 9223372036854775804 push rbx sub rsp, 8 cmp rax, rbp jb .L15 mov rbx, rdi mov rdi, rbp call operator new(unsigned long) mov rsi, QWORD PTR [rbx] mov rdx, QWORD PTR [rbx+8] mov rdi, rax sub rdx, rsi cmp rdx, 4 jle .L16 call memmove mov rdi, rax .L6: mov rsi, rbp call operator delete(void*, unsigned long) add rsp, 8 mov eax, 10 pop rbx pop rbp ret .L11: mov eax, 10 ret .L15: call std::__throw_bad_array_new_length() .L16: jne .L6 mov eax, DWORD PTR [rsi] mov DWORD PTR [rdi], eax jmp .L6