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

    <tr>
        <th>Summary</th>
        <td>
            llvm/include/llvm/ADT/SmallVector.h missing noexcept specifiers on move methods
        </td>
    </tr>

    <tr>
      <th>Labels</th>
      <td>
      </td>
    </tr>

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

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

<pre>
    I was running clang-tidy checks in a downstream project that copied the file SmallVector.h. I noticed that it doesn't have any conditional noexcept specifiers on the move assignment or move construction ctors. This would enables vector pessimation and violates the [performance-noexcept-move-constructor](https://clang.llvm.org/extra/clang-tidy/checks/performance/noexcept-move-constructor.html#performance-noexcept-move-constructor) clang-tidy rule. Also pessimizes a lot of other std containers like variant etc. More important now that we have switched to std::optional as well.
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJyMU7GO4zgM_Rq5IWLYcuwkhYssBgG2uGoX18sSHfNGFg2JTjb39Qd5MrszxQBXmqb4Ht97NCnRNSD2qv2m2pfCrDJx7H-8PjxxqKpDMbB79N_hbhLENQQKV7DehOtOyD3ATmhfE1AAA47vIUlEM8MS-R-0AjIZAcsLoQOZEEbyCD9m4_3faIVjOZXwHQIL2a3DCJCAY0xB6YPAZG4IJjzAcnAkxMF4CIy_LC4CaUFLI2FMwGGbP3Pu33aaMQhwfCtZzsxWmydABk4l_JwowZ1X7wCDGTwmuG2kYMGUaDZbswkObsTeCKYNQrXfFowjx9kEi7t3MruMs_uNw1G1L0ofJ5Elqeas9EXpyyZc6f1tLjlelb7gL4nm_cemaP7YNFX68gFH6cuXSOUks1e6-X-09Omjf3H1WMLZJ35uTf9iAgOeBXgElgkjJHFZQTEUstaeXhFuJpIJAii2hL84ItC8cJRcC3x_8_KObw6mO4mdssOch2U9mjMvTz9Ngjt6Xxaub9ypOZkC-7o7NMe66g51MfWdbhFrbI6nU2dN7WzVHt1xbBvtmrod2oJ6Xemmquu2Pul9U5fj2FX7bhyGo9FodK32Fc6G_G_tC0ppxb6rqrYrvBnQp_cTiH1u2g3rNal95SlJ-vNMSDxuDUpfKFi_uuzNs3B--an05VO-YaaU8tF8kdotnjPKxC4Va_T958RcSaZ1KC3Pf1A2es8LyyzyJjku2zL_BQAA__-5Cldv">