<table border="1" cellspacing="0" cellpadding="8">
    <tr>
        <th>Issue</th>
        <td>
            <a href=http://email.email.llvm.org/c/eJztVclu2zAQ_RrqQkSQqdUHHZS4AQIUKODmblDkSGZLkQZJpUm-viMpiR23RlG0hx5KDLjNoseZB01r5VN9vwdKisQewPFgHUlvJikS2llHpeK9sT4oQR0M3H311ABIT7mh8HjQSqhAhTUP4LyyhnbODtQ9cD0CDZYaa65Q6wPVy50y1DoJblJ6HpTvntB9OCiNB_RHPX76ygdJ0o0g7BqFtROawUqISbIhSbPMTaD7EA6epA1htyi9CvuxjTEcHrR-eF2uDs5-ARHw2Grb4pIynmQV40XeVoXoElllwEsoq0wIvq5yJrtcFKU4xlFG6FHC8eJui9PmLTt3prPxnrD0Y54XpygR-iIvj1luAwwHfDEmPr0RmntPt3N270n6YbF4OVPCXsKd1YdVpxasQDg3iyE9jjmNDQoY3mrYqW4XJudzu3e2yu9a7mFnOzR9_8JPh6AG9TyX6hpt8JunwGf3uc4_AzONz8Ep02-he3vnuQFha0rK61flNlbGg8PaVZOKpG8aB2F0yBaG1a-WBBzVpNycpf-0JtzIf5M6ZfWfOpeo84twc4DG9eMAJlxiV3OZXc1fY9cyR7JO5Tpd84iPYW9dLcfnp2h0uv5t5invR_C4ydMyT6J9XUrJuirPuVhxBpKvkjzLeMeSlVglZQKR5i1oX5McacMMfKNzCNyTfBP9OQJVs4ShrKaxZiwuqizN21VSZCvcdBXJEiyt0vEUJ7auj1w9h2zH3qNSKx_8UYkkVj22lRkwIgwqaKhv1ePcgpZS4G_jx27ioAMHRsy9JmAfc6_3E7Eod72PZuz1DPw7-ugK2w>53750</a>
        </td>
    </tr>

    <tr>
        <th>Summary</th>
        <td>
            Fix for returning non-const lvalue reference to the rvalue remark args
        </td>
    </tr>

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

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

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

<pre>
    The `operator<<` for diagnostic remarks needs an explicit conversion from rvalue to non-const lvalue in order to satisfy compilation in `-std=c++2b` mode.

At https://github.com/llvm/llvm-project/blob/32a0482a65b86cf0d84ea7e784cca9852df5c67c/llvm/include/llvm/IR/DiagnosticInfo.h#L556

```c++
template <class RemarkT>
RemarkT &
operator<<(RemarkT &&R,
           std::enable_if_t<
               std::is_base_of<DiagnosticInfoOptimizationBase, RemarkT>::value,
               StringRef>
               S) {
  R.insert(S);
  return *(&R);
}
```

and https://github.com/llvm/llvm-project/blob/32a0482a65b86cf0d84ea7e784cca9852df5c67c/llvm/include/llvm/IR/DiagnosticInfo.h#L578

```c++
template <class RemarkT>
RemarkT &
operator<<(RemarkT &&R,
           std::enable_if_t<
               std::is_base_of<DiagnosticInfoOptimizationBase, RemarkT>::value,
               DiagnosticInfoOptimizationBase::Argument>
               A) {
  R.insert(A);
  return *(&R);
}
```



</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJztVU1v3CAQ_TX4gmJ58ffBByfbSJEqVdr2vgIz9tJiWAFOk_z6ju0ku9k2qir10EPRCANvGB4zb1lh5WPz5QCUFIk9guPBOpLezFYktLeOSsUHY31QHXUwcvfNUwMgPeWGwsNRq04F2llzD84ra2jv7EjdPdcT0GCpseYKUR-oXteUodZJcDPoeVC-f8Tt41FpnOB-xPHoKx8kSbcdYddoTMxsRishJsmWJO3at4EeQjh6kraE3aINKhwmEWM4nGh9__K5Ojr7FbqAU6GtwE_KeJJVjBe5qIquT2SVAS-hrLKu43WVM9nnXVF2pzjKdHqScFq422G3fc3OneltfCAs_ZjnxTlLpL7a82XW1QDjEW-MiU9vOs29p7slu19I-mH1eJ5Twp7DXdSHVecerEA6N6sjPbUljS0aGC407FW_D_PmS783vsrvBfewtz26vr3hp2NQo3paSnWNPnjmOfFl-1LnX5GZ2-fglBl20L_e89KBsJqS8voF3MXKeHBYu2qGSPqKOAiTQ7UwrH61JuAEk3J7kf7zmnAj_03plNV_6bwnnd-EWwK0bphGMOE9dbXvq6v9a-pa-0g2qazTmkdBBQ3NrXpYHtQ1MP4Ifn4bHfTgwHTLyxnwVXYv63OaKHeDjyanmz-WrvJ-Ao-DPC3zJDo0NWds0wvJmRRl1VdQyyTteJYIgeLdVJHmArRvSI66Ywa-0yUEjkm-jVTDEoa2mVvNWFxUWZqLTVJkGxz0FckSpKx0PPOIrRsi1yyUxDR4BLXywZ9A1LAa8F9lOQ7j8ykcrGvk9PQYLec2C-8fn4n1zw">