<table border="1" cellspacing="0" cellpadding="8">
<tr>
<th>Issue</th>
<td>
<a href=https://github.com/llvm/llvm-project/issues/125541>125541</a>
</td>
</tr>
<tr>
<th>Summary</th>
<td>
`-Warray-bounds=` warning compiling `lvm-project/llvm/lib/Target/AArch64/MCTargetDesc/AArch64ELFStreamer.cpp`
</td>
</tr>
<tr>
<th>Labels</th>
<td>
backend:AArch64,
code-quality
</td>
</tr>
<tr>
<th>Assignees</th>
<td>
</td>
</tr>
<tr>
<th>Reporter</th>
<td>
firewave
</td>
</tr>
</table>
<pre>
```
In file included from /usr/include/c++/14.2.1/algorithm:60,
from /home/user/CLionProjects/llvm-project/llvm/include/llvm/ADT/SmallVector.h:18,
from /home/user/CLionProjects/llvm-project/llvm/include/llvm/MC/MCELFStreamer.h:12,
from /home/user/CLionProjects/llvm-project/llvm/lib/Target/AArch64/MCTargetDesc/AArch64ELFStreamer.h:16,
from /home/user/CLionProjects/llvm-project/llvm/lib/Target/AArch64/MCTargetDesc/AArch64ELFStreamer.cpp:15:
In static member function ‘static _Up* std::__copy_move<_IsMove, true, std::random_access_iterator_tag>::__copy_m(_Tp*, _Tp*, _Up*) [with _Tp = const llvm::MCSymbol*; _Up = const llvm::MCSymbol*; bool _IsMove = true]’,
inlined from ‘_OI std::__copy_move_a2(_II, _II, _OI) [with bool _IsMove = true; _II = const llvm::MCSymbol**; _OI = const llvm::MCSymbol**]’ at /usr/include/c++/14.2.1/bits/stl_algobase.h:521:30,
inlined from ‘_OI std::__copy_move_a1(_II, _II, _OI) [with bool _IsMove = true; _II = const llvm::MCSymbol**; _OI = const llvm::MCSymbol**]’ at /usr/include/c++/14.2.1/bits/stl_algobase.h:548:42,
inlined from ‘_OI std::__copy_move_a(_II, _II, _OI) [with bool _IsMove = true; _II = const llvm::MCSymbol**; _OI = const llvm::MCSymbol**]’ at /usr/include/c++/14.2.1/bits/stl_algobase.h:555:31,
inlined from ‘_OI std::move(_II, _II, _OI) [with _II = const llvm::MCSymbol**; _OI = const llvm::MCSymbol**]’ at /usr/include/c++/14.2.1/bits/stl_algobase.h:683:38,
inlined from ‘llvm::SmallVectorImpl<T>& llvm::SmallVectorImpl<T>::operator=(llvm::SmallVectorImpl<T>&&) [with T = const llvm::MCSymbol*]’ at /home/user/CLionProjects/llvm-project/llvm/include/llvm/ADT/SmallVector.h:1070:25,
inlined from ‘virtual void llvm::AArch64TargetELFStreamer::finish()’ at /home/user/CLionProjects/llvm-project/llvm/lib/Target/AArch64/MCTargetDesc/AArch64ELFStreamer.cpp:499:31:
/usr/include/c++/14.2.1/bits/stl_algobase.h:452:30: warning: ‘void* __builtin_memmove(void*, const void*, long unsigned int)’ offset [16, 24] is out of the bounds [0, 16] of object ‘NewSyms’ with type ‘llvm::SmallVector<const llvm::MCSymbol*, 0>’ [-Warray-bounds=]
452 | __builtin_memmove(__result, __first, sizeof(_Tp) * _Num);
| ~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/home/user/CLionProjects/llvm-project/llvm/lib/Target/AArch64/MCTargetDesc/AArch64ELFStreamer.cpp: In member function ‘virtual void llvm::AArch64TargetELFStreamer::finish()’:
/home/user/CLionProjects/llvm-project/llvm/lib/Target/AArch64/MCTargetDesc/AArch64ELFStreamer.cpp:475:40: note: ‘NewSyms’ declared here
475 | SmallVector<const MCSymbol *, 0> NewSyms;
| ^~~~~~~
In static member function ‘static _Up* std::__copy_move<_IsMove, true, std::random_access_iterator_tag>::__copy_m(_Tp*, _Tp*, _Up*) [with _Tp = const llvm::MCSymbol*; _Up = const llvm::MCSymbol*; bool _IsMove = true]’,
inlined from ‘_OI std::__copy_move_a2(_II, _II, _OI) [with bool _IsMove = true; _II = const llvm::MCSymbol**; _OI = const llvm::MCSymbol**]’ at /usr/include/c++/14.2.1/bits/stl_algobase.h:521:30,
inlined from ‘_OI std::__copy_move_a1(_II, _II, _OI) [with bool _IsMove = true; _II = const llvm::MCSymbol**; _OI = const llvm::MCSymbol**]’ at /usr/include/c++/14.2.1/bits/stl_algobase.h:548:42,
inlined from ‘_OI std::__copy_move_a(_II, _II, _OI) [with bool _IsMove = true; _II = const llvm::MCSymbol**; _OI = const llvm::MCSymbol**]’ at /usr/include/c++/14.2.1/bits/stl_algobase.h:555:31,
inlined from ‘_OI std::move(_II, _II, _OI) [with _II = const llvm::MCSymbol**; _OI = const llvm::MCSymbol**]’ at /usr/include/c++/14.2.1/bits/stl_algobase.h:683:38,
inlined from ‘llvm::SmallVectorImpl<T>& llvm::SmallVectorImpl<T>::operator=(llvm::SmallVectorImpl<T>&&) [with T = const llvm::MCSymbol*]’ at /home/user/CLionProjects/llvm-project/llvm/include/llvm/ADT/SmallVector.h:1093:14,
inlined from ‘virtual void llvm::AArch64TargetELFStreamer::finish()’ at /home/user/CLionProjects/llvm-project/llvm/lib/Target/AArch64/MCTargetDesc/AArch64ELFStreamer.cpp:499:31:
/usr/include/c++/14.2.1/bits/stl_algobase.h:452:30: warning: ‘void* __builtin_memmove(void*, const void*, long unsigned int)’ offset [16, 24] is out of the bounds [0, 16] of object ‘NewSyms’ with type ‘llvm::SmallVector<const llvm::MCSymbol*, 0>’ [-Warray-bounds=]
452 | __builtin_memmove(__result, __first, sizeof(_Tp) * _Num);
| ~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/home/user/CLionProjects/llvm-project/llvm/lib/Target/AArch64/MCTargetDesc/AArch64ELFStreamer.cpp: In member function ‘virtual void llvm::AArch64TargetELFStreamer::finish()’:
/home/user/CLionProjects/llvm-project/llvm/lib/Target/AArch64/MCTargetDesc/AArch64ELFStreamer.cpp:475:40: note: ‘NewSyms’ declared here
475 | SmallVector<const MCSymbol *, 0> NewSyms;
| ^~~~~~~
```
I am using `gcc (GCC) 14.2.1 20240910` on Manjaro Linux.
</pre>
<img width="1" height="1" alt="" src="http://email.email.llvm.org/o/eJzsWV9vo7gX_TTOi9XI2EDggQdKmp8iTWd-Uju7j8iACZ41dtY27WYf9rOvbEiTTLuT7vzZGY2CUOPY5l7fw7n3nirUGL6RjGUgugbRckYH2ymdtVyzR_rAZpVqdhmI0XSjfC1hywWDXNZiaFgDW616CPBqMBrg1TQN8KoG-NrfqyCc43kA8IqKjdLcdj0geYwALgDK4cfX3l6neubNMme3eMOV_L9WH1htDcArIR76q-34ffp64n2ayJf3AK_ueirEL6y2Ss87QPIg-S983xb-z82b1Z3VjPZsco6_gXPBK4BX91RvmJvNc113cej9j5NLZurDwrMzxT_Wmert1p0qAiQfKWcstbyGPesrpmE7yNpyJSG4wSBBIE2m9fL9FuAcGtu4J0lelrXa7spePTBAinJtbt0IF9DqwX8-7dRUNqovaV0zY0pumaZW6dLSDSA3p8YATsp758cZOBq9H0cpBNH1I7edW4OALGGtpLHQo-IN3RZ3u75Swm0n1-7B12yrlBJwCsHv9zFEyz0G6eEVcim4fErNPUblu_WLyJQUu5DWax_F9PFufRzJy77d2dfrs2efonz3qp1H8UBqX1lXKu5paKwoXYmpqGGe1hEOAMkJ-nxkgp8VmTABJA_x5yPzswITuaJDgn8FjK8vZ_D4scOOE-LCTs6FfTjNUU9d91sBSHHvKiWO4dk9fk1txxILyBLg19j19wHP-7MYPQfoW0oKtECA5Dg6h-AD13agAj4o3hwdfGqCY2M8aoXjasslNx3ACcDp1wjqi1tzmKZjmvgG_WXcCyM8VmmSw0eqJZcbNzwgpnjjunpZVgMXlsuyZ_2UctOay7eRCkcTQskNHKTXtw3k0p6Ap9rWMOvo5MUPxCGIlpAbqAYLVQttx2ClBtkYt8e1EBjEbotqoaocnIcTvmWPd7veHIx7htrdlp3JHECKT2Z5AZEj_5NdEF1f_Uq1prur8Wwue6KlJ1wYYQgWxYl8ewmystTMDML6GlW2XBs_NPxPptq9tkmhR_zt0DvQyPWTNvzYw18fXyC6eTb34jXy5ruwF67lP0vJr5egT8nxfVJ04TpZ6NNKKstOcuoZYxtWC6pZAzum2cinRXT0tl8i7Z6q8IircG_5E5z5xPXEnovsv8j-i-y_yP6L7L_I_h9a9qcOwSC8yP6L7L_I_ovsv8j-L5X9xz82uf8CIO3hYLjcQBCjTV1DgJP_FYUj61hjIEY4RGngnoFKwlsqP1Ct4Bsuhz_msyYjTUpSOmNZsCBJjEKUprMua5ukZW2SVowswrglAaUBqlBFw7hKcIBnPMMIRwgjEixIGKXzmqVR0rIFjpomaFIGQsR6ysXcvbu50psZN2ZgWYCjKAxmglZMGP_DGsYVrX9jsjkwCmCvwjCuVcOufh-o4HbnJqPlTGeeHNWwMSBEghtrDj4st4JlIEbPS0KM9pUU1qrfcjGh9i2YFqPZoEXWWbs1jvF4BfBqw203VPNa9Ud-Tr17iBz_J5QeMvx3AAAA___emIi5">