<table border="1" cellspacing="0" cellpadding="8">
<tr>
<th>Issue</th>
<td>
<a href=https://github.com/llvm/llvm-project/issues/62101>62101</a>
</td>
</tr>
<tr>
<th>Summary</th>
<td>
Asm labels with weird characters differ from GCC
</td>
</tr>
<tr>
<th>Labels</th>
<td>
new issue
</td>
</tr>
<tr>
<th>Assignees</th>
<td>
</td>
</tr>
<tr>
<th>Reporter</th>
<td>
jrtc27
</td>
</tr>
</table>
<pre>
Consider:
```
extern int my_var1 __asm__("my_renamed_var1.$£");
extern int my_var2 __asm__("\"my_renamed_var2\"");
int
get_my_var1(void)
{
return (my_var1);
}
int
get_my_var2(void)
{
return (my_var2);
}
```
GCC will produce:
```
get_my_var1:
movl my_renamed_var1.$£(%rip), %eax
ret
get_my_var2:
movl "my_renamed_var2"(%rip), %eax
ret
```
whereas Clang/LLVM will produce:
```
get_my_var1: # @get_my_var1
movl "my_renamed_var1.$£"(%rip), %eax
retq
get_my_var2: # @get_my_var2
movl "\"my_renamed_var2\""(%rip), %eax
retq
```
-- https://godbolt.org/z/5ac7a557G
For symbols with dodgy assembler characters that's fine, since GCC's won't compile and the difference therefore can't be problematic, but for ones that are valid in GCC by virtue of using quotes or similar we end up producing a different, incompatible symbol name, as the real symbol name will have quotes in it.
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJycVcFy4jgQ_Rr50hXKNBibgw8Zp8hl9rpXqiW3saZkiZFkGPbrt2STWZIlM8m4KBnc3a9fv9eUKQR9sMy1KL6I4imjMfbO1998VFhm0rWXunE26Ja9WD2K_EnkL-cmv36mn_wjsregbYThsj-RX8J-T2HY7wVWAnG47D1bGridgguBa9GgeFwJRIFbsfryDg6-xhFF8z-068M3SPOpbZy_HDjur8wEVien25Q8Z5bXEgAAz3H0FgRWP7NvMMun34Djp8DxPvhraefzuWngrI2Bo3ftqPjXdtxO-5II12twJzPd37ekElh4fUzssAGBBdOP1yCe74z-Xqc7jiWvPtHlriTnnj1TgMaQPQjcff36919_rBH84hK4ArHObws-NufbPf_QxN_vCfspevguvd_9fT5D8K4nDw_Qx3gMSXrcCdwdXCudiQvnk0X_CNwVpEoqivL5tm7nPITLIJ0JcNaxh9a1hwtQCDxIwx5UT55UZB8g9hQFlgE6bTnxDNoqhuemmZ6enRVYRlBuOGrDQLaF2DO0uuvYc0qNaXM65xkUzcmS09JIwwNFrRKoHCN0zoOzPLcE8gwnMroFbVM3kBc4aR9HBtfBGLQ9wPfRRQ6QptGDNuThzMC2hfF43cqURT_JxNRK28SVopaGrypAsifFKEzkPZO5Dc173tOJX1pqCzousrZetdvVljKul5tqucK82FRZX5fEOa5wueEuJ7mRSlVbtSVWnSw6qjaZrjHHVb5e4rLELVYLLOW2ldtivekYlSKxznkgbRbGnIbkZ6ZDGLne4DJfZoYkmzC9RxAtn2EKTiv3lPk61TzI8RDEOjc6xPAfStTRcP0YBpgxZv_PrH176_qsGHTeDUn8bPSmfrNqOvajXCg3CNwl-Ovt4ejdN1ZR4G4iFQTuJtL_BgAA__-LMgjt">