<table border="1" cellspacing="0" cellpadding="8">
    <tr>
        <th>Issue</th>
        <td>
            <a href=https://github.com/llvm/llvm-project/issues/61897>61897</a>
        </td>
    </tr>

    <tr>
        <th>Summary</th>
        <td>
            Simle and innocent inline assembly that never writes to %rsp crashes by causing a weird write to %rsp to be conjured up at -O0
        </td>
    </tr>

    <tr>
      <th>Labels</th>
      <td>
      </td>
    </tr>

    <tr>
      <th>Assignees</th>
      <td>
      </td>
    </tr>

    <tr>
      <th>Reporter</th>
      <td>
          pskocik
      </td>
    </tr>
</table>

<pre>
    This:
```

void *readsp(void){
    register void *rsp __asm("rsp");
    void *savedSp; __asm ("mov %1, %0\n" : "=r"(savedSp): "r"(rsp) );
 return savedSp;
}

```
works on clang at optimization levels >= -O1 (on on gcc on ALL optimization levels), but on clang, at optimization level -O0 it crashes due to conjuring up a weird load from the stack and into the stack pointer (!):
```

  pushq   %rbp
        movq    %rsp, %rbp
        movq    -8(%rbp), %rax   //???
        movq    %rax, %rsp //???
     ...
```

https://godbolt.org/z/bPEr1Wqc4
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJx8U81u8yoQfRq8GSVyIHbshRdp0qwq9Uq90l1WGCY2DQYXcPrz9FeQpM1X9YuFjIBzZpgzB-696gxiQ4o7UmwzPoXeumb0ByvUIWut_Gj-7ZUnbE3yLcnXpMzP47RM_6NVEghdO-TSj4RWcYPQmqzuTgAAAIed8gEdfKH9CM_P3A-EVoRSF5k0stgV6wL2_IjyaSTs7sSBE2mwRyC0WBC6iXNOio0hlAJha4jR2NaloNWFH8Ono_N-ylrDH2kdhskZ-E55rnW1vS76hxJv1h08WANCc9MBD2DHoAb1yYOyBjQeUXsg7J6wLcweF7EAayKhEyJO64eH3yjxZnQD7RS-gsf1r_Fh9piDCiAc9z16kBNCsCCseZmcMh1MI3B4Q-UkaMsl7J0dIPQIPnBxAG4kKBPs1dZolYlNS3IvTvLdcALAOPn-FSB2w7XjdyPjN9hjPEpnUffNTdSsSkkT4CRCXPD3FGAXB7uMv2bh7xeeH2-w5vP5jaL6EMb0AhK_s7K1Osyt6wjdfRK6a_-5d4v_XsUykw2TNat5hs2irPIlpTSvsr5h5aqijJb7CuuC7Vf1Xgi2ZyWVe1HsJWaqoTll-TKn-aool9W8LKqqlTVvq7KsUVZkmePAlZ5rfRxi7kx5P2FTLqp6lWneovaXR-yaCJq1U-fJMtfKB_9NCypobJ7UoPHcb2MFmgDKaGUQuPc4tPoDQs8DGDyigzenAvpopbOSF4O1HyD45KO1Lr5K2CtosNDi2YIokwND9Gk2Od38UFaFfmrnwg6E7uKFz9NsdPYFRSB0l4r2hO5S3f8HAAD__1SWY90">