<table border="1" cellspacing="0" cellpadding="8">
<tr>
<th>Issue</th>
<td>
<a href=https://github.com/llvm/llvm-project/issues/61640>61640</a>
</td>
</tr>
<tr>
<th>Summary</th>
<td>
Wrong code for inline assembly with `-masm=intel` on x86_64
</td>
</tr>
<tr>
<th>Labels</th>
<td>
new issue
</td>
</tr>
<tr>
<th>Assignees</th>
<td>
</td>
</tr>
<tr>
<th>Reporter</th>
<td>
lhmouse
</td>
</tr>
</table>
<pre>
Godbolt: https://gcc.godbolt.org/z/bn15EWhsq
```c++
using my_function = int (int, int);
extern my_function* my_fptr;
int
ptc_indirect_call(int a, int b)
{
return my_fptr(a, b);
}
int
asm_indirect_call(int a, int b)
{
__asm__ ("jmp qword ptr [my_fptr@GOTPCREL]");
__builtin_unreachable();
}
```
```asm
ptc_indirect_call(int, int): # @ptc_indirect_call(int, int)
mov rax, qword ptr [rip + my_fptr@GOTPCREL]
mov rax, qword ptr [rax]
jmp rax # TAILCALL
asm_indirect_call(int, int): # @asm_indirect_call(int, int)
jmp my_fptr@GOTPCREL
```
The inline asm statement gets compiled as a direct call and will jump to nonexecutable data.
(the at&t syntax however doesn't suffer from this issue.)
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJyMVFFv4jgQ_jWTl1FRcEiAhzxAWVYnVbrTqdI-RnYyIa4cO2tPCr1ff3KgLd1ld2tZtoH55vu-GWwZgj5YohLyLeS7RI7cOV-arndjoES55qX86hrlDEO2wY55CJBtQOxB7A91PTucf5w5fwCx_w_EXtl5_uVbF75DuoN0c1mL9DxrENs4p2_HoO0B-5eqHW3N2lmEbIfaMoJYacsg7nHa1pBdIHRi8vYaA2IzfRzYv0Wd1widDgPXlbaN9lRzVUtjzulRXghQRYopFBGW29cjoiceL3Qxv1hNEHWtKCJ2N2ll6D9N-4G1qiK0ilUAIZ76Ab8fnW9wYI-Qb1_VLNKvfz_-c__vlwfIdyDEB1VVpUZtWNtqtJ5k3UllaEp4FfSu_LU_N5smQ__bQl73aTJwPUBkCIv0z9A3-3H07nnavTzFkA_-vR4QxBZv1-HzaeTpp_hYay9PP3r4ydDj5q-H-83Dw28b_bEslzr8OfaqA9eybrj9deseO0JtjbaEMvQYWDL1ZBkPxAFr1w_aUIMyoMSzFoxaUNoGj9oYfBr7AdmhdZZOVI8c_z7YSJazC49YcUcoGUTBGF4syxN27kjP5LFxFCyIJWMY25Y8tt71yJ0OqEMYafbmM2nKrFlna5lQOS-W6zwrinyddGWb5cu2aFtVKDVPczFPW6Hm2aJd1ktFaZboUqQiSzORpfN8ma1ncrFqREGNrOdKrYWERUq91GZmzHMfH6hk4i6LebFIEyMVmTC9e0JYOp6FxVuU7xJfRsydGg8BFqnRgcN7FtZsqPzmnT1g7RrC1vn3YgfqlXnBo-YOoUjv-nh5sp22TAaKFJ3F06qoikUyelP-8KBq7kY1q10PYh_5Ltvd4N0T1QxiP6kMIPaTi_8DAAD__7sXsk4">