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

    <tr>
        <th>Summary</th>
        <td>
            clang miscompilation when using experimental-mv abi
        </td>
    </tr>

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

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

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

<pre>
    `repro.tar.zst` uploaded at https://files.catbox.moe/5asjku.zst

The above tarball contains an archive with all combined dependencies, and a CPP-processed C source file to reproduce the bug. The bug happens on both `clang-17` and trunk. No `wasi-sdk` build or `wasi-libc` sysroot is needed to reproduce and diagnose the bug, vanilla `clang` with `wasm32` target shall do:

```
clang --target=wasm32 \
   -Oz -mmultivalue -c hgcd2.orig.c -o hgcd2.o -Xclang -target-abi -Xclang experimental-mv

wasm-ld -m wasm32 ghc_5.o repro.a hgcd2.o -o integerPowMod.wasm

wasmtime integerPowMod.wasm

```

The above example produces invalid code and crashes with:

```
Error: failed to run main module `integerPowMod.wasm`

Caused by:
    0: failed to invoke command default
    1: error while executing at wasm backtrace:
           0: 0x15b647 - <unknown>!abort
           1: 0x15216d - <unknown>!dlfree
           2: 0x15012d - <unknown>!free
 3: 0x5d161 - <unknown>!__gmp_default_free
           4: 0x5d3f3 - <unknown>!__gmp_tmp_reentrant_free
           5: 0x9e6e3 - <unknown>!__gmpn_gcdext
           6: 0xa1dcd - <unknown>!__gmpz_gcdext
           7: 0xa2bad - <unknown>!__gmpz_invert
           8: 0xa941f - <unknown>!integer_gmp_invert
           9: 0xaa4cb - <unknown>!_blk_c1yM
          10: 0x4ab2f - <unknown>!StgRun
 11: 0x2a60c - <unknown>!scheduleWaitThread
          12: 0xa233 - <unknown>!rts_evalLazyIO
          13: 0xa362 - <unknown>!hs_main
 14: 0x6ec1 - <unknown>!main
          15: 0x17ad12 - <unknown>!__main_void
          16: 0x17ad84 - <unknown>!_start
 note: using the `WASMTIME_BACKTRACE_DETAILS=1` environment variable may show more debugging information
    2: wasm trap: wasm `unreachable` instruction executed
```

However, if either `-Oz` is changed to `-Os` (or `-O3` and other optimization levels), or if `-Xclang -target-abi -Xclang experimental-mv`, then it compiles and runs fine, producing the correct result `7690788370462822410877571751743509720259`.
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJyUVttu2zAS_Rr5ZSBBoi62H_yQOgm2u822aAN034wROZZYU6RBUnaSr19QknNVutggsC1qzjnDM8MLOicbTbSJyi9Reb3A3rfGbu7JWmP_ifywqI143ERVauloTeLRJk_OR1UK_VEZFCQAPbTeH12UX0XsNmK3e6nIJRx9bR6SzlDEbkt0fw79AE2vo_Rq_LxvCbA2JwKPtkalgBvtUWoHqAEtb-WJ4Cx9C-PLrpaaBAg6khakuSQXsS2gFoCw_fEjPlrDyTkSsAVnessJQjbgDQwTED0n8C1B3TcJ3I8_oMXjkbQDo6E2voWoSrlC3cTZMsw00Hvb60MC_zbh5RmdjJ04hJd1L5UAY5_Hlax5eOEenTXGg3SgiYJRb5IIpEJio417zijM5YRaKoXPOQSqwYGRv8tZGPFoG_Lg2uCLMMH6V75GVTr9D48DD8TxCIry65EHonI7BgBA_P0J4q7rlZcnVD1BzKFtuGCJsbJJOMTm8gzxfybGkTDGWj6P0cORrOxIe1Rxd3qdVVCNlYC4gymBpuW7MplcSfBFwIDUnhqyP8z5zogkxL-n8rKj_xH2zof3TUcP2B0VwVQSB1KfUEkB3IixQNyia8kNBfi7xzdhwUT5FexRqqnWvYYOpYbOiF5RKOBMum-T22Ifmrd-fFYDAEjfEkt9MgcKy6Ebuoj22Cv_Ep6F8GEFw7kN3U8PxHsvdRPWalCFGvnBW-T0Rmf6G-TSh6ysq2IJMUT5ttcHbc46ym8ilmFtrP-Ayi4ollViBiXU3hJ9gLELLM3YHOwVKB9DS5FV2Uzkbtd0x93kxm5WrLgw5Pv8UwbfHXeWSHuL-hOecuRZU0Wf8uhdwwU9fDSqGsGYCT434QH89Bl4OYFZjX8BS32imRKtJvC6yPYz4Kk7BxM-YVhPDFjwek6-Vocdzx7v3gOzqacKrNmc9C_f_Oz1hMqmVmJYpXwm2PGWwor6jdLft5ZQfJBjF5vyufpY73Z0QvUNnx6_fv8AnvoM84rNgFu3C6v6kuvUUhXxuZ58FfnCP3VPtkSRzSnsBoHdyciPE6tesKtiDus8PtdNGx8WOPQurP1wyERV-vvq193917ub3Zer7b_uf15tb3bXN_dXX7_9ivLrLBwupE_SGh02cTihlVgrgg4fwbXmDJ2xBILqvmkCq9R7Yzv00rya6GD_sNF4i8fnh6hKe20JeRsog5TUztueB_S0S5H4y979D3OmE9lwTso9kPQtDQdv_P1pYHPAW9TNuE0O4y6MR2xlprj8cqCbAWuOXnbyaUgfFJ1IuYitA7-xQSJg_o_TrkoD1LekQfqwQR_DVWjQs712sJeaQsR44lyKwo21xD1Ycr3yQXNZrdPlapUv06JiK8aKLF0tl-UyW5bZssjLdL1kKSvXUZUmC7HJxTpf44I2WbVerasyzatFu0kLVuRVxqoVrzhhURBRuU5FyVdVWWSrhdywlOVZljLGiryskr0QjLMyE4zWGad9VKTUoVSJUqcuMbZZSOd62iyzjBULhTUpN9wcGRvvKoyFS6TdhPi47hsXFamSzrsXBi-9os1oXyfd6NHo_zn4NvbqO2MBa7nordq8vWg20rd9nXDTRew2KExf4Rr4h7iP2O2QsIvY7ZDzfwMAAP__lmZPfA">