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

    <tr>
        <th>Summary</th>
        <td>
            [libc++] Use `[[no_unique_address]]` in place of `__compressed_pair` to reduce compile time and debug info size
        </td>
    </tr>

    <tr>
      <th>Labels</th>
      <td>
            libc++
      </td>
    </tr>

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

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

<pre>
    As covered in crbug.com/338094922 , `__compressed_pair` is a major contributor to debug info size. Many libc++ classes use them to store allocators, default deleters, and other things. I believe that `no_unique_address` was intended to be layout-compatible with the `__compressed_pair` technique, but I'm not sure it actually is.

Regardless, for unstable ABI users, it would be a major QoI improvement to avoid extra compressed pair template instantiations.

I thought this feature request had already been filed, but I couldn't find it.

Related work:
* https://reviews.llvm.org/D153991
* https://github.com/llvm/llvm-project/pull/65675
* https://github.com/llvm/llvm-project/issues/49358
* https://github.com/llvm/llvm-project/issues/61196

Can we do this yet?

cc @zmodem @cjdb @amykhuang @zygoloid 
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJysVE1v4zYQ_TXUZbCGTH1ZBx2SDQzk0EML9GyMyJHEhCK95NCu99cXlNNNukUubQHDFEaamffecB7GaGZHNIjmUTRPBSZefBiCey1Gr2_DQwTlLxRIg3GgwpjmnfKrkMeqOpR93UsJQn4F0Zank_LrOVCMpE9nNEG0JZgICCu--ADKOw5mTOwDsAdNY5rBuMlDNN9pB7-gu4E1oxLyUchHUBZjpAgpEvBCa06K7AMBWusVsg8xt9Y0YbIMmiwx3WPoNHheKAAvxs1xB88wkjV0ybWQM17nT8mZb4lOqHWGnfFeMYJxTE6Tzg1HAos3n_hLJodsRktwNbxkSJ-yZlLLVjpjGRPDs5DdCs4zxBQIDAMqTmjtDUzcifJJlA_3_99oxqBthiO_wuQDJBcZc9uHx-csxp2hYbj6ZHVG-JfCv_pnMOs5-Aut5Djjx4s3GugPDgjvQCEDBab1bJEJTO7g2CAb7_4O5xl48WleOAsZYSLkTCDQt0SRYUENaAOhvsFI5GAylvQP1qAyRCdkxzAZp8HwT2Rzfw1XH15F9RYU8gEW5nPMEXkU8hjoYugad9Ze1p0Ps5DHp31T9f3-s4zZ8JLGt5ua096OL-fgX0ixkMdzslbIY9u0XfMfypgYE0Uhj3VfNYf_o1C73_ftR5W-ooMrgfb3GdyIRXX8-IFSIOry--o1rflJvegxn7jeXpeEbt5e32Zv82Uo9FDpvuqxoGHf7duqb_u2K5ah1NTRQddlOTXVdOhkO9V9pw4HPTV9X3aFGWQp67KRct82bdnsZKfGEWVd46jqqtaiLmlFY39MqthYDX1Vtn1hcSQbN6eR8n3RhZTZecKwCTKmOYq6tCby-8ALNmw3j_qQ1jzB73Hbwc27Hv-5z81T_mUXcnC2qAj89PnOegikk6JtT4wlYLPS5iQ_WVWRgh3-_XzvYlwG-WcAAAD___qix_I">