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

    <tr>
        <th>Summary</th>
        <td>
            Poor performance of performance-unnecessary-value-param in clang-tidy 19.1.7
        </td>
    </tr>

    <tr>
      <th>Labels</th>
      <td>
            clang-tidy
      </td>
    </tr>

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

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

<pre>
    After upgrading clang-tidy from version 18.1.6 to 19.1.7 I noticed that `performance-unnecessary-value-param` got really slow.

I run with `clang-tidy --enable-check-profile`  on our code base, once with the old version, and once with the new one. Then I grepped entries of this check, sorted them by the first field, and please see top 20 entries from each version:
- clang-tidy 19.1.7:
```
  1296.1571 ( 92.3%)   1.6836 (  3.6%) 1297.8407 ( 89.4%)  1301.2990 ( 89.3%)  performance-unnecessary-value-param
 943.5278 ( 86.0%)   4.0867 (  6.5%)  947.6145 ( 81.6%)  959.5694 ( 81.5%) performance-unnecessary-value-param
  866.4393 ( 91.0%)   0.6227 (  1.6%) 867.0620 ( 87.6%)  867.1579 ( 87.6%)  performance-unnecessary-value-param
 650.7637 ( 81.9%)   3.9667 (  6.8%)  654.7304 ( 76.7%)  660.7008 ( 76.7%) performance-unnecessary-value-param
  632.6522 ( 83.4%)   1.3317 (  2.7%) 633.9839 ( 78.4%)  637.5449 ( 78.5%)  performance-unnecessary-value-param
 592.1411 ( 82.4%)   1.1224 (  2.3%)  593.2635 ( 77.4%)  595.2981 ( 77.4%) performance-unnecessary-value-param
  574.6037 ( 80.0%)   7.1497 ( 11.5%) 581.7534 ( 74.5%)  594.6721 ( 74.7%)  performance-unnecessary-value-param
 555.9572 ( 85.2%)   0.5483 (  1.4%)  556.5055 ( 80.3%)  556.5736 ( 80.3%) performance-unnecessary-value-param
  549.7090 ( 81.4%)   0.8889 (  1.7%) 550.5980 ( 75.8%)  551.1463 ( 75.7%)  performance-unnecessary-value-param
 543.0547 ( 79.6%)   2.9457 (  5.3%)  546.0004 ( 74.0%)  550.6407 ( 73.9%) performance-unnecessary-value-param
  535.2278 ( 80.0%)   1.2093 (  2.4%) 536.4371 ( 74.5%)  539.3148 ( 74.4%)  performance-unnecessary-value-param
 526.2376 ( 79.6%)   1.1839 (  2.3%)  527.4214 ( 74.0%)  531.4533 ( 73.9%) performance-unnecessary-value-param
  501.3134 ( 77.1%)   2.2074 (  3.7%) 503.5208 ( 70.9%)  513.0346 ( 70.9%)  performance-unnecessary-value-param
 500.1112 ( 79.7%)   2.3116 (  4.6%)  502.4228 ( 74.2%)  510.7616 ( 74.2%) performance-unnecessary-value-param
  497.1975 ( 87.5%)   0.6075 (  2.1%) 497.8050 ( 83.4%)  498.6758 ( 83.3%)  performance-unnecessary-value-param
 488.6909 ( 81.5%)   0.8534 (  1.9%)  489.5443 ( 76.0%)  491.9533 ( 76.0%) performance-unnecessary-value-param
  473.3286 ( 80.9%)   2.4528 (  5.3%) 475.7814 ( 75.3%)  478.7844 ( 75.3%)  performance-unnecessary-value-param
 471.0853 ( 81.0%)   0.7795 (  1.7%)  471.8648 ( 75.4%)  473.7543 ( 75.3%) performance-unnecessary-value-param
  467.9987 ( 77.3%)   2.6716 (  4.9%) 470.6703 ( 71.3%)  480.3696 ( 71.4%)  performance-unnecessary-value-param
 467.5921 ( 79.2%)   1.1558 (  2.4%)  468.7479 ( 73.3%)  470.5755 ( 73.2%) performance-unnecessary-value-param
```
- clang-tidy 18.1.6:
```
 14.3213 (  9.3%)   0.2375 (  0.6%)  14.5588 (  7.4%)  14.5539 (  7.4%) performance-unnecessary-value-param
  12.1474 (  4.4%)   0.3959 (  0.5%) 12.5433 (  3.6%)  12.5363 (  3.6%)  performance-unnecessary-value-param
 11.1302 (  4.3%)   0.3941 (  0.6%)  11.5243 (  3.5%)  11.5181 (  3.5%) performance-unnecessary-value-param
  11.0908 (  4.6%)   0.3859 (  0.6%) 11.4767 (  3.7%)  11.4680 (  3.7%)  performance-unnecessary-value-param
 10.9081 (  5.1%)   0.3449 (  0.6%)  11.2529 (  4.1%)  11.2460 (  4.1%) performance-unnecessary-value-param
  10.9071 (  4.0%)   0.3874 (  0.6%) 11.2945 (  3.3%)  11.2952 (  3.3%)  performance-unnecessary-value-param
 10.3415 (  3.9%)   0.4229 (  0.6%)  10.7644 (  3.2%)  10.9564 (  3.2%) performance-unnecessary-value-param
  10.0487 (  4.5%)   0.3539 (  0.6%) 10.4026 (  3.6%)  10.4265 (  3.6%)  performance-unnecessary-value-param
 9.8498 (  4.6%)   0.3350 (  0.6%)  10.1848 (  3.7%)  10.5083 (  3.8%) performance-unnecessary-value-param
   9.6022 (  4.4%)   0.3496 (  0.6%) 9.9518 (  3.6%)   9.9516 (  3.5%)  performance-unnecessary-value-param
 9.3159 (  4.5%)   0.3253 (  0.6%)   9.6412 (  3.7%)   9.6373 (  3.7%) performance-unnecessary-value-param
   9.1873 (  4.4%)   0.3463 (  0.6%) 9.5336 (  3.6%)   9.5281 (  3.6%)  performance-unnecessary-value-param
 9.0140 (  3.7%)   0.3728 (  0.6%)   9.3868 (  3.0%)   9.3801 (  3.0%) performance-unnecessary-value-param
   8.9893 (  4.0%)   0.3648 (  0.6%) 9.3541 (  3.3%)   9.3842 (  3.3%)  performance-unnecessary-value-param
 8.8615 (  3.9%)   0.3696 (  0.6%)   9.2311 (  3.2%)   9.3386 (  3.2%) performance-unnecessary-value-param
   8.6921 (  3.9%)   0.3637 (  0.6%) 9.0557 (  3.2%)   9.2582 (  3.0%)  performance-unnecessary-value-param
 8.5388 (  4.3%)   0.3112 (  0.6%)   8.8500 (  3.5%)   8.8450 (  3.5%) performance-unnecessary-value-param
   8.5110 (  3.8%)   0.3473 (  0.6%) 8.8582 (  3.1%)   8.8568 (  3.1%)  performance-unnecessary-value-param
 8.4446 (  4.0%)   0.3497 (  0.6%)   8.7943 (  3.2%)   8.7876 (  3.2%) performance-unnecessary-value-param
   8.3555 (  4.6%)   0.2681 (  0.5%) 8.6236 (  3.7%)   8.6190 (  3.7%) performance-unnecessary-value-param
```
As you can see the performance impact of the new version is really huge. Our jenkins job that previously (with clang-tidy 18) used to finish in about 2 hours, now (with clang 19) reached 8-hour timeout configured inside the job. After disabling this check, the job execution time went back to ~2 hours.

</pre>
<img width="1" height="1" alt="" src="http://email.email.llvm.org/o/eJykWc2uozwSfZpkY6XkKrv8s8jizveppV7NLOYFCHESurkQAemeu5lnHxEwOCEL0iNd6UpV2ByfqjpVOFnbFucqhP2G_7Hhv7fZrbvUzb6pD-XtsD3Ux6_9x6kLjbhdz012LKqzyMusOu-64vglTk39KX6Fpi3qSqADBCO6WqAHBCu-i6ruijwcRXfJOrEx8hqaU918ZlUedreqCnlo26z52v3KylvYXbMm-9wYKc51J5qQleWXaMv6N2zkx0Z-fBfNrRK_i-7Sb5Wg2O1ClR3KsMsvIf-5uzb1qShDv5GoK1HfGpHXxyAOWRs29JeoqzwM23SXIOryGE_QO7Pq-PRAFX6Lugog_n0Jlfguzk24XsNRhKpritCK-iS6S9GK-8v7Ldq66e5nDp_i8HXf41Q0bSdORSiP8SXXMmRtEG0IoquvguS04Z3UkOWXCZfqj79LiR8YHhwbI8c_-SEEkjeAbFFsyAlPoDbEG_JCCATjlLnbhQIz2pG8BaelvTucBx0XoJII5L2MnmmrNXGUH8JrBUzWDesNyAmKBunM8EZhgKPdawsGNQ8LcMIoPHtg43V0xBUrgQhnDGjl1UAKJkgkGKIRyfxCZyxIQ-PJ7QykdyBbv3CsRGJYgjXKxoP4CYgCb2ZKXLQb1mCVHE5uDdjJYSRYKd2zYy0lRhEYJhqQqDnsAkEpHJHQtK9RCrxTw8mtm583ygJrPTn4TUrYE6DGIWEdPQBBIh2BTNnHXgEZNWSJtfMC9gzkHT471lLCVoORMTgyyRILqP1gxzn72CFYVmNs9Hxy9hqMJYwO-y4lzODZjrFhoCRdWTsV03U-ORtgyRyRqweHHas-caymRHuwMkpA8kYhwTnnI5J4QmYJ7N3wvOU5j5kRUBsVHW9TohVI1kMMrJ8LTxB4zWO6cnJybUBKOQVHzkgkmKh3Vk0luJoSxUCTqqVZgkBy1Bgx5zGrXnssLrNEeVCoXXTodykhA6SsWVKCgLFSHwqHLGjCF5QoBM1K_TElEkFhLAQLmASHpNWx50xZIvvGELVLzirIqEAqbRaOtZRICYhIkRKbAFGIY_PTM1UsCTTRFAOakfRCPa5IHGsp0d4CesuxUXDaceRoFzRR1T_vJMuFHGvvwFh20fFuE9bOgfHSP7fOewVH8RJJJ9LO93quYmORMxIEP2XJ7FhNiVWgyE1a5JPgaB5jkJSw7mXCxXRNSltbB9bppWMtJRZBOlaRknQasNbzs6jdFzgTK5WT4FgFlrV6RrKaEmPBe2dj4aiEEmPnfPUTJRKMleP7MKGk13bjTXS8qyU9EPaxY_mk4yAgj9mXiJrQxoHV4yBkVRocCWzHVmTVm4WTDrOPE-_96-LFxIsaFOGousmMKmQvjmMs5VzxqIHZjQdKhoe7PYrm-7MD9kNMVDr90CeVZx9h8DR1A-uxlJJh_G5XZmlfCQMRUEmKKNQDCo1LMhCY9PQ6Tu04DlKJfTUZCNKP8p6qbQ_DzWRMnyAI2sbZd-4Sd7sZZ4nUvpYMCV7GQ3DSlCSoOK8-kUFMPqLG1K6NfLavJqOHMbZ_oR_ERrmYMQ9kkB8_gURSV3c708K-ngylcdrWJyg00Qsy-vanp85Nid2zWdjfIEPqUe-EfmhGaqq-hAwJWtLim_VuJ8N_WiYenPav01ONLfiJC3Sj-j_kpwSWbqoe9yYXwoORRC8lQ49SnsDw4Bnd4siD3SxKeDUVCtm_jAeNHTKloseskRZU9HZl1bP9DSrQxeXPVJgFDA-sljcZ_S5Ms2q9nxUS9VJtegw2TiePVChnpoDIB7vEZ_tqKhx459VLuYgjyAMVijUuVOEOQv-xWjhw5rVYTEPGExWkEBdi0aNQzvypWIh-ciV8DWP8TH-gQjLbVyCIHS3itJoKVs697KjxQ-OBCgeOpVyUY2_XvLC_QQUjymepGQrELgqkBzEfGR_AzSmLb1OhtTYvMzPejjxRYf08XFBqd_b_yQrF43z5pN5kHD5PWg4MzVphExAG_aLa359SP1rxVd9EnlXDZe4lpJuI4vOa5d1wSzxcJsf78qKNl9yX2zmA-OetET9C9bOoWvGjPgyX5tcm_CrqW1t-9Ujvl9IPQ3GP-daGo-hqcSqqor2IohLZob51gsSlvjXthv4SVf37cb1A3y9tQpZfwlG4Xf-o6IrP0K_M6-pUnG9NOIqiaovjcKwf9QHE8GvAsWizQ1lU56e77_ExEf4T8lvXn7LfUvwOVScOWf6zh_nfERds5Mf2uFdHr3y2DXu0WkqvvMLtZU9sdU6nA5HxUuORybjDQTqde5T56bQt9iSJJZGkvlEhHPP8RI4d5sra0yFstAyfWVFCWf76hLo5b4u2vYU9kpPObsvsEMr2_rMH0UzphmjDf2-bfb9qd7id242WZdF27bxPV3Rl2P-rrpuHSNenNdnTh2dxkb-9NeX-0nXXtv_AoW8b-nYuusvtAHn9uaFv_avHf7trU_8Iebehb_fztBv6Nh7p157-FwAA___zFKmQ">