<table border="1" cellspacing="0" cellpadding="8">
    <tr>
        <th>Issue</th>
        <td>
            <a href=https://github.com/llvm/llvm-project/issues/61257>61257</a>
        </td>
    </tr>

    <tr>
        <th>Summary</th>
        <td>
            Clang-tidy: performance-move-const-arg strange failure 
        </td>
    </tr>

    <tr>
      <th>Labels</th>
      <td>
            new issue
      </td>
    </tr>

    <tr>
      <th>Assignees</th>
      <td>
      </td>
    </tr>

    <tr>
      <th>Reporter</th>
      <td>
          JVApen
      </td>
    </tr>
</table>

<pre>
    Bug linked to https://discourse.llvm.org/t/some-instances-of-performance-move-const-arg-suggest-a-fix-others-do-not/69055/2?u=jvapen

In case of
````
void f(int &&);
void g()
{
    int i = 0;
 f(std::move(i));
}
````
Clang-tidy gives a warning that this move has no effect, though removing it makes the code invalid. This was identified in https://github.com/llvm/llvm-project/commit/a7f8aea71485c00db2ffb6288ae58475869048b1

As such, I believe this report is not that relevant and with std::move being elided due to recent changes, even on O0, I don't understand the performance impact it can have. 

Assuming we want to keep this case, I would expect this to be reported on the definition of the function. That would be the place where the unneeded && can be detected and both definition and declaration can be updated. 

Though, I don't believe this has nothing to do with performance, one could argue that it should not even be reported.

Possible fixes:
 - add extra diagnostic on function definition
    - optionally: remove current diagnostic
 - remove the diagnostic
 - make it configurable that next to CheckTriviallyCopyableMove, it does not report if function requires the move
 - move the trivially copyable detection to a separate check

If it is decided what option to take, this could be a good beginners bug.
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJyUVUFv6zYM_jXKhXDgyLHjHnJIWwR4A4btUOwuS7TNV1vyJNlp__1AOW2SDe8wwEgsySS_j_xIqRCos4hHUT6L8nWj5tg7f_ztr9OEdtM483l8njsYyL6jgeigj3EKojgJeRbybChoN_uA22FYxq3znZDnKOQ5uBEzsiEqqzFkrs0m9K3zI6-z0S2YaWdDzJTvsjB3HfJ71tJH5mKPPmTGZdaxq-opL0shz1IU51kUrz8XNaEV-avIT-vvDwtaBQTXXner_PakncWRgVbImmwEIav0PIni-e64E7LmzdXF4XoEAMBGBKJ4hfzbJHkL0XAqihMTYu9sf-dXHF5_hehlULbLIplP6GjBAAouyluyHcReRYg9BWC30KsA1gG2Leoo5AvE3s1dDx5Ht_D3FGFU7xgg9gjaGQSyixrIbOGNvVxUADJoI7WEBsj-q4gdxX5uttqNQp65jte_bPLuZ4p51m4ciV_Uoa0VqsNuX5c6z00j27apZF0rLOv9oayrp3xfN7v78pwChFn3DP0HNDgQLrjy8zg5H4GYYFx5exxwUTaCsgYuFHt4SDI0yJRxIIMGzIysSY8abQTdK9th4Di4oAVn4Y98jWqcFfIQYbYGPYvSpGTdaRJonJSOnEytLPRqwS08sgjzyLEvCBcGGB28I04rE9bfGuri5sEAfkyor1WMDhq8ckXDsDi2wZYsRXIWXJt22tlqXnPZVLw6anBFOiiNcOnRr-vZWkROwSrmhLlhpxE1B2GGjYv9fRjeM6gH5VVaX23myaiI5pHtW9LYY_IeSreqMvZJsA6MW4t1l1E2dpYVyTyU77hYTIwihD5tctVTqe7ys72H8acLgZoBoaUPTIpdmy8DZTjJ0SswpDrrQiTNqf1K4h3xWyNn4CbeUcPwKYrT2kIIevaeBXTz9B3m-kUq2H9Pue2SYpxtqZu9YqiJo8WPpJCXHvX7m6eFOOaLmz75m9_TuHhhU-NwVf9XL7Q3Ch7_nslfGzuNmO_AX6Dil2vQV99XDbB9dKAg4MQFR9AM5WFstgyAAositdOFka8ZYtuo3nGdNyzwLzUq6Jzjt46sRR-gmbvtxhwL81Q8qQ0ed9WhluWhrqpNf1R61-T7dl_uyl29K3RRGV0fyryS7a7BQm3oKHNZ5EVe59V-L8ttYw6yUU1e7Yp8p-pG7HMcFQ3fN8yGQpjxWO1kedgMqsEhpNtLSosXSIdCSr7M_DGNsWbugtjnA4UYbl4ixQGPtzHMevj1HQUhep4u0CoaZo-wmf1w_N9zNKELfKkx-n8CAAD__wUidqQ">