Issue 146303
Summary missing tail call optimization on RVO
Labels new issue
Assignees
Reporter rockeet
    ```c++
struct Slice {
    const char* data;
 unsigned long size;
    ~Slice();
};
Slice get_s_impl();
Slice get_s() { return get_s_impl(); }
```
clang produces:
```asm
get_s():
 push    rbx
        mov     rbx, rdi
        call    get_s_impl()
 mov     rax, rbx
        pop     rbx
        ret
```
icc recognized tail call and produces:
```asm
get_s():
..B1.1:                         # Preds ..B1.0
        jmp       get_s_impl() #7.24
```
g++ also missed such tail call optimization.

If delete `~Slice;`, g++ & clang recognize the tail call, but icc fails.
_______________________________________________
llvm-bugs mailing list
llvm-bugs@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-bugs

Reply via email to