<table border="1" cellspacing="0" cellpadding="8">
    <tr>
        <th>Issue</th>
        <td>
            <a href=http://email.email.llvm.org/c/eJylU8lu2zAQ_RrqMoigkLJjH3RIa-RUtEURoGdSHElMuAgk5SVf36GcZum1ACWKs1DvvZlRQV86tvlifMQRrPRjxIFtDozvppznxMQ94w-0rD26OsSRPnXoE23fKPgXDvWUnWVczDJKhxnjjcw5GrVkpKg9aw6sub--f0_owfiU--CU8QgRZyt7hF5amyAHYNvGoevdTB9wMnkqFnU9M_4VTIZJzjP6Nfr7j0dKjfEC4YgR8oQlfKVS8gcrxwTBrw4Zx8WhzwlOBQWZLoBnk3INn5JMgoQZ1KVYbxxZiZhj4iDWK0O82gUvR1JJcAXn3ZaYgjV-OcMzRo8W1GKsTvVH-sqG_jlRkmjbtvnowbN0s0USGz6rPgatgs2vwr-URwxPR_zZTh_zHyeCTauPKLPxIwyLp4NMEyaQGUjv2ViEbByCwl4uCeGEjN8dEXw4kZiZSnABhymhhmVeNStlKbf1wR9JOhN8XelO6L3Yy0oueQqx86Z_1pjkYr3BmKol2u4fDlTGRdWE4bWNXrebOYYn7DMdTUpL6ZaHjdi2m2rq5NBs9ju-aaUWqPVWUBdst7co2j2qptWVlQptKp3LOFcLqcNLf9DmTLrSlQXwu339s7gPM4lgXlZnKt7Nofp_xKbjDafV7JqG33JRIwqUTbMbtMY70WvWNuiksfXfOapit15J2BM5LXVienfKlMzoEVeChDCbbPE6p2_TQ3bQMdA0aLiOL1W9L7zemh3eRrFaAXcr2j9nk0ma>53645</a>
        </td>
    </tr>

    <tr>
        <th>Summary</th>
        <td>
            [instcombine] dropped inreg function argument attribute
        </td>
    </tr>

    <tr>
      <th>Labels</th>
      <td>
            bug,
            miscompilation,
            llvm:optimizations
      </td>
    </tr>

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

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

<pre>
    [inreg langref](https://llvm.org/docs/LangRef.html#parameter-attributes)

When instcombine replace calls to `memcmp` with `bcmp`, it happens to NOT carry over the `inreg` flags on the arguments when they exist.  `inreg` is set by `-mregparm=3` for `-m32` (32b x86) linux kernel builds.

blocks #4440

example: https://godbolt.org/z/z3fjveP4h

This is creating fun crashes at compile time because we've now totally messed up the calling convention.
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJxdU8mOnDAQ_Rq4lAbRNvRy4DBJa05REkUj5WzsAjzjBdmml_n6lOnJbJLBdm3Ue_Xovbp2RftNu4AjGOHGgEPRHgu2n1KaY8HvC_ZAy5iTrXwY6ai8jLT9oOA_OFRTsqZgfBZBWEwY7kRKQfdLQoo6FPWxqO9v778TOtAuJultrx1CwNkIiSCFMRGSh2JbW7TSznSAs05TtvS3e8G-g04wiXlGt0b__PVIqSFcwZ8wQJowh69Qcv5gxBjBu9UhwrhYdCnCOXdBpivgRcdUwackHSFigv6arXeWrATMFvzI15I-3Oyc5SuxxFkPl_2WkILRbrnAMwaHBvpFGxWrj_B74-VzpCTeNE390YMXYWeDRDZ8Zn30qvcmvRL_kh8-PJ3wdzN9zH-cqG1aMqBI2o0wLI4uIk4YQSQgvmdtEJK2CD1KsUSEMxZsd0Jw_kxkJhrBFSzGiAqWeeUsjyVXk96diDrtXVWqjqsDP4gy6WTwJp23gZJwQAVPA1JwUxQ1InPiG__wpo5yCab7ApcmvvQVVXtV3Ot2Nwf_hDLRVce4ZGE9tHzbtOXUtS1jbc_UYd_gsNsOcoM7POwV3-xxt9lsSyN6NDF3WjDWL0Qky1Kizep4Y0bkFt_t65f5vZ-JL_2yOmP2tsdSd6xmtOp9XbMN4xUiR1HX-0Ep3HGpiqZGK7Sp_v8wZehWCPTlSE5DkovvThGjHh2uROb6YkmTD53T8llhFItxGkMsV9TdCvkfn7Qz3Q">