https://gcc.gnu.org/bugzilla/show_bug.cgi?id=120871
Bug ID: 120871
Summary: missing tail call optimization on RVO
Product: gcc
Version: 16.0
Status: UNCONFIRMED
Severity: normal
Priority: P3
Component: c++
Assignee: unassigned at gcc dot gnu.org
Reporter: rockeet at gmail dot com
Target Milestone: ---
struct Slice {
const char* data;
unsigned long size;
~Slice();
};
Slice get_s_impl();
Slice get_s() { return get_s_impl(); }
g++ produces:
get_s():
push rbx
mov rbx, rdi
call get_s_impl()
mov rax, rbx
pop rbx
ret
icc recognized tail call and produces:
get_s():
..B1.1: # Preds ..B1.0
jmp get_s_impl() #7.24
clang also missed such tail call optimization.