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

    <tr>
        <th>Summary</th>
        <td>
            [Hexagon] Small data constants cause duplicate symbols
        </td>
    </tr>

    <tr>
      <th>Labels</th>
      <td>
            backend:Hexagon,
            mc
      </td>
    </tr>

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

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

<pre>
    When building the Zig test suite for Hexagon, we see lots of errors like this:

```
error: ld.lld: duplicate symbol: .CONST_0000000000000100
 note: defined at test
    note: /home/alexrp/Source/ziglang/zig/.zig-cache/o/8c04f039e5f8745b4f33232b0a957843/test.o:(.gnu.linkonce.l8.CONST_0000000000000100+0x0)
 note: defined at compiler_rt
    note: /home/alexrp/.cache/zig/o/9c7be22a9275891985506bbdb2ae4ceb/libcompiler_rt.a.o:(.gnu.linkonce.l8.CONST_0000000000000100+0x0) in archive /home/alexrp/.cache/zig/o/9c7be22a9275891985506bbdb2ae4ceb/libcompiler_rt.a
error: ld.lld: duplicate symbol: .CONST_3FF0000000000000
    note: defined at test
    note: /home/alexrp/Source/ziglang/zig/.zig-cache/o/8c04f039e5f8745b4f33232b0a957843/test.o:(.gnu.linkonce.l8.CONST_3FF0000000000000+0x0)
 note: defined at compiler_rt
    note: /home/alexrp/.cache/zig/o/9c7be22a9275891985506bbdb2ae4ceb/libcompiler_rt.a.o:(.gnu.linkonce.l8.CONST_3FF0000000000000+0x0) in archive /home/alexrp/.cache/zig/o/9c7be22a9275891985506bbdb2ae4ceb/libcompiler_rt.a
```

I find the `MCSA_Global` in these places pretty suspicious:

https://github.com/llvm/llvm-project/blob/55fa7e1ef4851c3c773ea9c11a0ae01798d028c3/llvm/lib/Target/Hexagon/AsmParser/HexagonAsmParser.cpp#L1567
https://github.com/llvm/llvm-project/blob/55fa7e1ef4851c3c773ea9c11a0ae01798d028c3/llvm/lib/Target/Hexagon/HexagonAsmPrinter.cpp#L208

Shouldn't these be `MCSA_Local`?

We've worked around this in Zig for now by always disabling the `small-data` feature.

cc @androm3da
</pre>
<img width="1" height="1" alt="" src="http://email.email.llvm.org/o/eJzUVVuL5DYT_TXqFzFGLvn64IfeGfx9gc0FZmEhL0NJLtvKqC0jyXPZXx_knluyDGQDCZtG0HJJqjqnTlGFIZhpIepY-YGVVwfc4ux8h5Ye_HpQbnjsPs-0cLUZO5hl4nEm_quZeKQQedhMJD46z_9PDzi5hcElvyceiLh1MXA3cvLe-cCtuSUeZxOYPDKxr0o8LXHcLzF55HbIrB3SbthWazRG4uHxpJxNtuzy55-uP92It79cJAd8cZH2ZzSahQaOcYeYjjh_OWXQz-5EDPozQwb9tdu8TpYvZrK4TOcdgz77YqYLjXpOh45B32hRjEK2VI5NXZSqGKUECUpgW9ZNIRn0KWTmEkVosmnZMmuWW7doymzzHnj4IB4Eg_YdFtqdVmPJ3_i_QCZ7xnumkFC3ulYEgC3UZdPmbVOWolJqUIBUaFIMemvUmygZ_l0G3CwcvZ7NHf1z4L65WmTf_wHxn7L43RfMV_j_cwXzLoN_q2Dethomjj_w0SzD3spYJX68vD7e_M86hZZVIkGKMwXiq0VNga-eYnzkYQur0cZtrw1sjnHdv6Bn0E8mzpvKtDslDPbu-e9i9e430pFBr6xLAMtyxJpyGoumzLXUdS0JW53nKJBEXrfNIKDR8o0fk959Qj9R8vPSbPtjOP2CPpB_tb6YMr2uDOTHvKzq7wPtG4TeLPEVIojmnNLr2W12WBjU8UkF9arRR6d3iZjsz7c_E4P6jvi987ep9r3bdllNSCqmKZVG0-LuuXrkaO_xMfDBBFT2eZKxSoQTWnsxYMSk_kgYN0_ZOYDWnBUCl8G7kxzwMHRyaGWLB-ryuqikbKFsD3PXtM2IbSVyEIrKYoQG26oqCTQ2pZDqYDoQUIpSFKLKi7zNdAWjGEaNOBaDaCQrBJ3Q2CzlMHN-OpgQNupy2RSyOVhUZMM-pAEU6ltaUtt7SS0wuGQAJ5225dXBd7uYapsCK4Q1IYZXz9FEuw_85-flFb9OWeApC1y7JURcYuAat0BftdZw2Lztvrmcdj6BQf9E6a6D3wMAAP__vlWcSw">