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