<table border="1" cellspacing="0" cellpadding="8">
<tr>
<th>Issue</th>
<td>
<a href=https://github.com/llvm/llvm-project/issues/60512>60512</a>
</td>
</tr>
<tr>
<th>Summary</th>
<td>
RISCV64 buggy generated code when using inline assembly
</td>
</tr>
<tr>
<th>Labels</th>
<td>
new issue
</td>
</tr>
<tr>
<th>Assignees</th>
<td>
</td>
</tr>
<tr>
<th>Reporter</th>
<td>
nstavropoulos
</td>
</tr>
</table>
<pre>
This piece of code
compiled with clang 15 --target=riscv64-unknown-linux -O2
```
#include "stdint.h"
int main(int num) {
uint64_t * base = (uint64_t *) 0x10000000;
uint64_t val32;
// Init X11 to zero
__asm__ volatile("mv x10, x0");
__asm__ volatile ("addi a0, x10, 1":::);
__asm__ volatile("sw x10, 0(%0)" : : "r"(base));
__asm__ volatile("lw %0, 0(%1)" : "=r"(val32) : "r"(base));
return 0;
}
```
generates
```main: # @main
li a0, 0
addi a0, a0, 1
lui a0, 65536
sw a0, 0(a0)
lw a0, 0(a0)
li a0, 0
ret
```
Which in my understanding is buggy as it uses register a0 without checking if it is used previously in inline assembly.
Thanks and apologies if there is something not clear enough.
Nikos
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJyElEGPqzYQxz-NuYwSmSGQ5MBh34sivUsrtau2t8jALLhr7MhjJ5t--srAbjfbp11EAuTv_2-GGWcUs-4tUS3Kb6I8ZCqGwfnaclAX784uGsdZ47pbLeRByIfHQTOcNbUE7gla1xHMArRuPGtDHVx1GKA1yvaQl7BaBeV7CqI4eM3tpdqson227mpXRtv4AqtfcSaISi7n_IiFtq2JKQIih07bsB4ELqu1DTAqbQXu0q2No8A9iO23JZ2obag2pwACH6BRTCCKAwjcvReSRb7kcj5EsZg_Ii7KFPhRFXgUeIQfVgf4K88hOPiHvFtUgNNJ8Xg6wcUZFbQhgTuBOF7gJZcCv8OLTO-C-zfu_y0we1TXaVCzafbmyVo8LOenjBnB11ernH4oZXIhgige5g-in_LZpVpN4tdUc4UZ9YbN32NTjoeFOpcwdeirYEtITyF6Cx-bIraHn--Wd989WfIqEMOd9mqYds2URQFiMz--Nm06jJ6vanmzO3Fqxpuolnbc-6N-56_KsqjuF_D1PgDu1NSPe8r1C_2zLD2FT8r056DbAbSF8QbRduQ5KNtp24NmaGLf30Ax6ACRicFTrzmQByWn_7aLAdqB2ufJ8JTWaU5LOzh7umgX2dwSXVujLYFiprExt_VdOx4HZZ8ZlO1AnZ1xvSZONAgDeUpEdiOFIQWxLkBrSHkg62I_rGfEL_rZ8XybdXXR7Yu9yqjOq225KeQWZTbU3b7FpqqeFBF1Rdcq2TZq12ybYk-5LDHTNUosJMoiL7BEucamafb7PW6xLCh_2omNpFFpszbmMq6d7zPNHKmuZJljZlRDhqfpiWjpCpOYNnd5yHydPKsm9iw20mgO_B8l6GCo_u3H79__qDZL1V93bjdP1utAFiJPdb6vZRa9qYcQzjwNgDSJeh2G2KxbNwo8pijLZXX27m9qg8DjlBsLPE65_xsAAP__wMysoA">