<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">