<table border="1" cellspacing="0" cellpadding="8">
<tr>
<th>Issue</th>
<td>
<a href=https://github.com/llvm/llvm-project/issues/59130>59130</a>
</td>
</tr>
<tr>
<th>Summary</th>
<td>
mysterious clang-tidy bugprone-use-after-move warning in obj-c block
</td>
</tr>
<tr>
<th>Labels</th>
<td>
clang-tidy
</td>
</tr>
<tr>
<th>Assignees</th>
<td>
</td>
</tr>
<tr>
<th>Reporter</th>
<td>
zmodem
</td>
</tr>
</table>
<pre>
Consider:
```
$ cat /tmp/a.mm
#include <utility>
struct S {
void foo() const;
bool b;
};
void run_block(void (^block)());
void bar(S s) {
run_block(^{
if (s.b) {
std::move(s).foo();
}
});
}
$ build/bin/clang-tidy /tmp/a.mm -checks=bugprone-use-after-move -- -fblocks
1 warning generated.
/tmp/a.mm:12:9: warning: 's' used after it was moved [bugprone-use-after-move]
if (s.b) {
^
/tmp/a.mm:13:20: note: move occurred here
std::move(s).foo();
^
/tmp/a.mm:12:9: note: the use and move are unsequenced, i.e. there is no guarantee about the order in which they are evaluated
if (s.b) {
^
```
Is this a false positive, or am I missing something?
(Based on http://crbug.com/1385107)
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJydU9tu4jAQ_ZrkZZQosQkpD3mgUKQ-9wNWjm0St4nN-kLFfv2OAwFaLdLuRmFie8ZnzpwZWiNOzcZop4S0CV0nxTYpZrssLu95SxbAmYeE7Px4QMvycZxdVGk-BCEhoZvg1aD8KaEv92jO28A9vEFSP59PAI5GCdgbk5CnhKyAIw-f0Ku7NWaA9nqQ1NvberLTfRv0j3Yw_ANRpoOIVr1cjlZn7Pj-4W7LLPrfwMX0d8TuMRHrzgOg9jGDy9tvd-LjvIgi0vVojjJGYUx-LfCuNIBYzWUTl_f8Zs9N9zaoQaDkrdJo-cB0l3klTl-bARnvJf9wCd22oTtYo2UWnMzY3kubRUqQZZDtp8rcGb2ET2a10h10UkvLvBT5nPe-z3RdEjTIcj3fiMuE1FhjDZhGwJQHlMcABzEd9qJ6fkAlqbZ_pynqU708oETRkCIS0cbL-J2qNJwHazF9L638z_58ex5zuMoyU_C9jHoA0-JMh1k80E7-DFJziX3cgMplHgPRoxzehC4wy7SXGN2a4CcQY0XUU8Nnr3gfj04TljyyIcRO_buA3_7Sk311CI0sGOzZgLwPximvoj4bpABshFcYlXNxSJwZJQbH5u--DunTM4szYDT03h-iymQXZ9Vi_3NuRlyX9KkqixopprIpl8tVScua1qloqFjRFUu98oNsxpPDIVEmOLib9EcTPY8vymTa94zDNN1psEMTibgrk075PrQXKsNwnD8Zwr5L7nGLRQaJM7GrkFqR9g1pV5wxWpd0VckloWVZiIoJXta14IslSwfWysE1OOYJITe2uMH5TlVDCkLKEn_VghSrnO7bfd0ywRbL5Z5g0KKQI1NDHonkxnapbSZOWK1D56CcdzcnwyZ0WsopH-Kz4Htjm1-jEXJMJ_bNRP03acuvBA">