<table border="1" cellspacing="0" cellpadding="8">
<tr>
<th>Issue</th>
<td>
<a href=https://github.com/llvm/llvm-project/issues/85560>85560</a>
</td>
</tr>
<tr>
<th>Summary</th>
<td>
[MemCpyOpt] Failed to eliminate `memcpy`
</td>
</tr>
<tr>
<th>Labels</th>
<td>
llvm:optimizations,
missed-optimization
</td>
</tr>
<tr>
<th>Assignees</th>
<td>
DianQK
</td>
</tr>
<tr>
<th>Reporter</th>
<td>
DianQK
</td>
</tr>
</table>
<pre>
I tried the following code:
```llvm
%0 = type { i8, [753 x i8] }
define void @src(ptr nocapture noundef %arg) local_unnamed_addr {
bb:
%i = alloca %0, align 1
call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 1 dereferenceable(754) %i, ptr noundef nonnull align 1 dereferenceable(754) %arg, i64 754, i1 false)
%i1 = getelementptr inbounds i8, ptr %i, i64 1
store i8 1, ptr %arg, align 1
%i2 = getelementptr inbounds i8, ptr %arg, i64 1
call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 1 dereferenceable(753) %i2, ptr noundef nonnull align 1 dereferenceable(753) %i1, i64 753, i1 false)
ret void
}
define void @tgt(ptr nocapture noundef %arg) local_unnamed_addr {
bb:
store i8 1, ptr %arg, align 1
ret void
}
; Function Attrs: nocallback nofree nounwind willreturn memory(argmem: readwrite)
declare void @llvm.memcpy.p0.p0.i64(ptr noalias nocapture writeonly, ptr noalias nocapture readonly, i64, i1 immarg) #0
attributes #0 = { nocallback nofree nounwind willreturn memory(argmem: readwrite) }
```
We can eliminate all `memcpy`.
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJy0VVur4zYQ_jXyy3CCLMWOz4MfzkkIlFJKn_q4yNbEmVYXI8l7mv76IuVmlrJsly2YBMua-S4zzKgYaXKIPWvemRAHUu63n5kQrDlUaklnH_rrWTV4fel_ghQINaQzwskb4z_ITTB6jUy-MX5g_P7b8utjzGd7OxINByYPkC4zAtu9A3VM7IE177tGwl_5tTkA2x3WiTSeyCF89qSBbXkMIxPdnAI4P6o5LQHB-cVpPAETjQoTE69g_KjMp8U5ZVF_UlqHjHdNOAwPqpBDqHBSJsfkd545KUOTg_p-bVTGPChkRRuLdpwvm5nnh9rtg9SVivPOLcbc84DGgCcM6EZUg0Emul2zzUwzgQz4vcFF8B6o3UI53APVcFImIhOvN_oZoy4qJ0xo0KJLGY_ckBHjrQ756E4n53uoj8kHBOqgXl27AX9hVI4X3wy1Iv__Wi3vVovv8foRXT-tlv9udcBUyN86-KutnKb0I1v5P1TpqyyZfIfj4sZE3sFbSiEy-VYoGjOo8U9w_hTwSvWDnIYPMiZgWoIDi9aHCxOdCpNFmwMDKv0RKD1N0jgaFfAbi6wMqbhyqOTyzlyelfzySoa83yipSqXI2pulTEi-VqxSCjQsCWP5VNo3j6cfonk1z-4jcY39O8KoHKAhS04lzIMIWMuvfrCWbyrdS_0qX1WFfb2redvUrZDVudenTtfjMIiu4Y2WXd2KbtBKnbqdxO2IFfWCiy2X9Y43nAu5aVXHsRND12zlTsuWbTlaRWZTSuDDVFGMC_Zd07S8MmpAE2-LoYxx-ebnRJb-Vrk5Yl4TYs-EsBQj6pf1x9sKCX0OfBmWKeZKU0zxCZYombJ4fkG7ny-_zinP_6MikzeMX5myNqRagunPKc25L5k4MnGcKJ2XYTN6y8SxML3-vczB_4FjYuJYhEUmjkXbPwEAAP__tF8k1w">