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

    <tr>
        <th>Summary</th>
        <td>
            C++20 coroutines: HALO regressed between clang 12 and 13
        </td>
    </tr>

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

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

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

<pre>
    See https://godbolt.org/z/fjoK4aMKT for a self-contained example.

Clang 12 was still able to apply heap allocation elision on `-O2`.
Clang 13 is no longer able to apply heap allocation elision with `-O2` but instead requires `-O3`.
Also see https://stackoverflow.com/questions/71581531/halo-support-on-recent-compilers-for-c-coroutines/72770957

Not sure if this change was intentional, just wanted to bring it to your attention.
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJyNks2SmzAMx58GLhoYMF_JgUOanU5ntu0e2hcwIMCpY7O2nDR9-gp2d7LdU2eMLUvmL_lndXa4tT8QYSZafFQcIvGZx2SHzmpKrZt494e_8WQfS_nt8SeM1oEEj3pMemtIKoMD4G95XjSmUfYQZYeX-ailmSAXcJUePCmtQXYagSzIZdE3mFEuILW2vSRlDaBWfl15RHWWPAme03-0ClAejAVtzYTuP-Wuiua7IHSBQBlPKAdw-ByUQ_8SLu75DtpbvuNHLp5k_8te0I3aXtPentn3HNCv-TzbTV7t8qrI2ZyltokPy2IdJdYkDns0xMjOi9LofMIck573zgZihtvvommyfdW8p_jdEvjgENQINPP1-5lR4AZVGWJNzi11JI5wCp7Yz85hpdI5xcwUrfbNBsZFr8fTeGiLYV_sZUyKNLbHSHziITJ4V09xgC-Hr08MaWJEnkU7pCuigf7tZaUZ-FHi4HT7oYGYeeheCWl9eVuSxdkT9sRb5X3Ybl3Vohbx3MqxLJu-2EmZ93WFXY67YV9VQ1N3KOtKxFp2qH0bVVyrMHiFTYLtqHqIVSsyIbJa7LJduS_zVIixzqqqabqyHnc9RmWGZ6l0utaxdnbs2q2kLkyeg9wt5O9B6b2aDOKWjvVloNm69mInrmFCzwTiLX-71f8X3C4TGg">