Issue |
139240
|
Summary |
[Clang] optimization: clang does not know memcpy returns its first arg
|
Labels |
clang
|
Assignees |
|
Reporter |
rockeet
|
```c++
void foo(char* buf, const char* src, size_t n) {
auto ptr = (char*)memcpy(buf, src, n);
memcpy(ptr + n, &n, sizeof(n));
}
```
gcc generate code:
```masm
foo3(char*, char const*, unsigned long):
push rbx
mov rbx, rdx
call memcpy
mov QWORD PTR [rax+rbx], rbx
pop rbx
ret
```
gcc knows memcpy returns its first arg.
clang generate code:
```masm
push r14
push rbx
push rax
mov rbx, rdx
mov r14, rdi
call memcpy@PLT
mov qword ptr [r14 + rbx], rbx
add rsp, 8
pop rbx
pop r14
ret
```
clang does not know memcpy returns its first arg
_______________________________________________
llvm-bugs mailing list
llvm-bugs@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-bugs