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

    <tr>
        <th>Summary</th>
        <td>
            need a more restricted form of `unnamed_addr` for string literals
        </td>
    </tr>

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

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

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

<pre>
    The C++ committee is in the process of clarifying the standard wording around string literals to make it clearer that a string literal can't be merged with a named constant (though that seems to have always been the intent). Clang currently uses `unnamed_addr` to power string literal merging, but that will no longer be a conforming way to lower C++ code. Clang therefore needs a way to express "may be merged with other constants" in LLVM IR that only permits merging if *both* constants have the annotation.
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJxskk-PnDgQxT-NuZSmRRf9hz5wmJlVSyvNXlarvUYFLsCJsVvlYgj59JHpTEZq5YTA1Hs_v1eUkhsCc2OOL-b4V0GzjlGaH-sQfXS2aKNdm_9GhleDLwZfoIvT5FSZwSVwAXRkuEnsOCWIPXSexPWrC8N2kpSCJbGwRLH5I0mcg4Wkkt-8UxbyCTTCRN8YnELnmYQFdCQFevgTOgoGzwotw8QysIXF6QgEgSa20MWQLRUM1jrGeRjvOol52lxGemcgv9CaoGW-87ugHNTgZQevnsIA3SzCQf0Kc-IE5lTOYTP4QtaKOZVZ6hYXlke-DOXCYPAV2lnv5ovzHkIEH8PAktEpg_ZRpjy60Jrl_Cb3GbPlDxodWbiPwhCYbQL6GOHvN8m5G8SJ1sdMYp77nUgyiLmvt7f__4G__72TxeBXuLFMTtMHOrgeDD63UUeDz5_z9-hyXBRCVFIXw66wTWUv1YUKbvanut4fyz0eirE5ni9ksT3vq7Jsu7a0PbVU28raQ81n3heuwRKr8lSV-7o6YrXDc1_Xtsaq76iuuDWHkidyfuf9-7SLMhQupZmbU3XCuvDUsk_b1iIGXmA7NIh5iaXJM0_tPCRzKL1Lmj5V1KnnJicJBFNOVTiX2ClbyJ3kNf5D4318LDsVs_hmVL0lUz0bvBq8Dk7Hud11cTJ4zZ6_Hk83iV-5U4PXjTQZvG43-RkAAP__otU06w">